Introduction
This document describes the error "417: Expectation Failed" that occurs, normally behind some form of proxy, when you make a web call to a server.
Background Information
This normally occurs on a POST or PUT method call. The return message to Cisco Process Orchestrator (CPO) looks something like this:
The remote server returned an error: (417) Expectation Failed.
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>417 Expectation Failed</title>
</head><body>
<h1>Expectation Failed</h1>
<p>The expectation given in the Expect request-header
field could not be met by this server.
The client sent<pre>
Expect: 100-continue
</pre>
</p><p>Only the 100-continue expectation is supported.</p>
</body></html>
Problem
This causes the web call to fail and the user does not get a proper response from the web server that they expect. This is for CPO Version 3.5.0 or older.
Note: In 3.5.1, a flag was added on each target so that it was easy to configure this to be on (checked) or off (unchecked) so this configuration will do nothing in 3.5.1 or beyond.
Solution
Navigate to the Tidal.Automation.Server.Exe.Config file on each node and configure a bypass for the 100-continue header. By default, on web request that are version 1.1 or later, .net adds a 100-continue header to PUTs and POSTs by defaults. If you see this issue, it is advised to turn off that default behavior for CPO only. You can do this through configuration in the .config file as shown:
Per node:
1. Shut down CPO service.
2. Backup the Tidal.Automation.Server.Exe.Config file which is located in the install directory, normally like C:\Program Files\Cisco\Process Orchestrator
3. Edit the .config file right after the system.diagnostics area and add this:
<system.net>
<settings>
<servicePointManager expect100Continue="false" />
</settings>
</system.net>
4. Save the .config file and restart the CPO service.
Again, this must be done on each node.
Note: If an upgrade is performed on the environment then the configuration file will be overwritten with the standard configuration file and you will need to replace this configuration, otherwise the error will return.