The operation has timed out. System.Net.WebResponse GetWebResponse(System.Net.WebRequest) at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)

We get the following error when a .NET based Windows Service makes a call to ASP.NET Webservice to upload the file.

 

The operation has timed out

System.Net.WebResponse GetWebResponse(System.Net.WebRequest)

at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request) at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at ImageX.Services.RemoteUpload.Client.RemoteUploadWebService.RemoteUploadWebService.InsertFile(String Physician_ID, String fileName, Byte[] pdfFile, String fType) at ImageX.Services.RemoteUpload.Client.ixRemoteUploadWindowsService.ProcessQueue()

 

We are able to upload small files around 4 MB but bigger file fails.

 

 

SOLUTION:

==========

- We need to increase the timeout setting of the web service proxy class before making the call to the web service.

Example:

      localhost.Service1 ws = new localhost.Service1();

      ws.Timeout = 300000;

      ws.HelloWorld();

 

The Timeout is set in milliseconds for synchronous calls to the XML Web service. The default is 100000 milliseconds. Setting the Timeout property to Timeout.Infinite indicates that the request does not time out; however, the Web server can still cause the request to time out on the server side.

 

NOTE:

======

- In these kind of scenarios we also need to increase the maxRequestLength in the web.config file for the webservice to match the size of the upload file.

- Also we need to make sure to set the maxconnection setting in the config file for the Windows service/application to appropriate number depending on the way requests are made to the webservice.

 

More Information:

==============

Improving Web Services Performance

https://msdn2.microsoft.com/en-us/library/ms998562.aspx