Wednesday, October 26, 2011

How to Fix "Server did not recognize the value of HTTP Header SOAPAction" in Web Service Deplyment

after I completed the test of web service in the testing environment

I deployed the web serivce to production server, and change the app.net application web service reference

Pointing to the live web service link. then i call the web serivce from the asp.net application.

the Errro thrown immediately after the web method is invoked.

here is the detail of Error Message


System.Web.Services.Protocols.SoapException was unhandled
  Message="System.Web.Services.Protocols.SoapException: Server did not recognize the value of HTTP Header SOAPAction

System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest()\n   at System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message)\n   at System.Web.Services.Protocols.SoapServerProtocol.Initialize()\n   at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response)\n   at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)"
  Source="System.Web.Services"
  Actor=""
  Lang=""
  Node=""
  Role=""
  StackTrace:
       at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
       at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
       at 

the root cause of  Hash.web contains some temporary information for this web service. Since i only update the web serivce link in the web config file. it will trigger the application pool to be recycle.. However the applicaiton pool recycle might not be able to completely clear the information that being cache.

here is two approach to fix the issue.
1. delete the test web reference in the asp.net application and add the live  web service link. (this is not a good practice and never recommand since any change in the applicaiton need to have extra test before you can put it live again.

2. clear the ASP.Net Temporary File under the .net Framework Folder and Restart the IIS to completely clear the file Cache in the Microsoft.Net Folder.

No comments:

Post a Comment