images-12

Common Proxy Server and Firewall Issues with SOAP

SYMPTOMS

images-11A SOAP web service is a HTTP-based Web service that is delivered over TCP/IP. The operation, connectivity, and performance of SOAP web services can be impacted by the proxy server and firewall environment. Client applications access the service through this environment.

The following errors are related to the proxy server and firewall issues. This article describes potential solutions for these errors.

You may receive one of the following errors from a client application that is accessing the SOAP web service.
Error 1
“The underlying connection was closed: The remote name could not be resolved.”
Error 2
“The request failed with HTTP status 502: Proxy Error”
Error 3
“The request failed with the error message: — Server Error in ‘/Find-20’ Application.
——————————————————————————–
Request format is unrecognized.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.InvalidOperationException: Request format is unrecognized.”

Error 4
“The request failed with HTTP status 407: Proxy authentication required.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Net.WebException: The request failed with HTTP status 407: Proxy authentication required.”

CAUSE

Error 1
The underlying connection was closed: The remote name could not be resolved.”
This error typically occurs if the network environment routes traffic through an HTTP proxy server, and the client application cannot read the proxy settings automatically from the registry. The problem is more likely to occur if the Web service client is an ASP.NET web application, because Web applications do not typically run on an interactive user account. Therefore, Web applications do not always have access to the browser proxy settings in the registry.

Error 2
The request failed with HTTP status 502: Proxy Error
This error may occur if the SOAP web service is behind a proxy server or a firewall that enforces limits on SOAP packet size, or that has a timeout value that is less that the time it takes for a large request to return. For example, a call to a mapping service to render a map with a large number of pushpins causes a large SOAP packet to be returned, and causes a request that takes longer to process than the timeout value allows. This may cause the request to fail, depending on the proxy and firewall configuration for the network.

Error 3
“The request failed with the error message: — Server Error in ‘/Find-20’ Application.
——————————————————————————–
Request format is unrecognized.
Description: An unhandled exception occurred during the execution of the current
web request. Please review the stack trace for more information about the error
and where it originated in the code.
Exception Details: System.InvalidOperationException: Request format is
unrecognized.”
This error may occur if a proxy or firewall is set to remove unknown headers.

Error 4
The request failed with HTTP status 407: Proxy authentication required.
Description: An unhandled exception occurred during the execution of the current
web request. Please review the stack trace for more information about the error
and where it originated in the code.
Exception Details: System.Net.WebException: The request failed with HTTP status
407: Proxy authentication required.”

This error occurs if the proxy server requires authentication from a domain user account.

This error typically occurs if the SOAP web service client is an ASP.NET application.

ASP.NET applications typically run on the security context of a local user account that does not have permissions on the network and proxy server.RESOLUTION

Error 1
To resolve this error, use one of the two following options:
1. Configure the proxy server in Machine.config or in Web.config.
a. For Machine.config, you must modify defaultProxy element as follows:

<defaultProxy>
 <proxy usesystemdefault = "false" proxyaddress="http://proxyserver:port"
 bypassonlocal="true" />
 </defaultProxy>

b. For Web.config, add the defaultProxy element as a child of the System.net element.

2. Configure the proxy server as in the following code.
Visual Basic .NET
Dim myProxy As New WebProxy(“http://proxyserver:port&#8221;, True)
Dim myFindService As New FindServiceSoap()
myFindService.Proxy = myProxy

C#
WebProxy myProxy = new WebProxy(“http://proxyserver:port&#8221;,true);
FindServiceSoap myFindService = new FindServiceSoap();
myFindService.Proxy = myProxy;

Note You must set the proxy for each SOAP service that you call. Also, you must use the
IMPORTS statement for Visual Basic .NET or the Using directive for C# to reference the
“System.Net” namespace to have access to the WebProxy class.
Error 2
To resolve this error, do the following:

  • Bypass the proxy server, and then configure the proxy server to accept large SOAP
    packets.
  • Increase the timeout value for requests.
  • Limit the data that you request.

Each solution may be different. The correct solution depends on the network environment that you use to call the Web service. Work with your network administrator to determine the specific settings that are required for the SOAP packets to be successfully sent to and received from the SOAP web service.

Error 3
Work with your network administrator to correctly configure your firewall to accept the SOAP headers. In some cases, you can just select the Remove Unknown Headers box in the firewall configuration.

Error 4

Configure the proxy server as in the following code.

Visual Basic .NET
Dim myProxy As New WebProxy(“http://proxyserver:port&#8221;, True)
myProxy.Credentials = New NetworkCredential(“username”,
“password”, “domain”)
Dim myFindService As New FindServiceSoap()
myFindService.Proxy = myProxy

C#
WebProxy myProxy = new WebProxy(“http://proxyserver:port&#8221;,true);
myProxy.Credentials = new NetworkCredential(“username”,
“password”, “domain”);
FindServiceSoap myFindService = new FindServiceSoap();
myFindService.Proxy = myProxy;

Note You must set the proxy for each SOAP service that you call. You must use the IMPORTS statement for Visual Basic .NET or the Using directive for C# to reference the “System.Net” namespace, and to have access to the WebProxy class and the NetworkCredential class.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s