Server did not recognize the value of HTTP Header SOAPAction


M

moondaddy

I have a winforms 1.1 application that has been using web services from a
1.1 web services project on the backend. I have to keep the winforms app in
..Net 1.1 for now, but need to upgrade the backend to 2.0. After
successfully upgrading the backend project to .Net 2.0 and creating new web
references in the winforms app to the new 2.0 backend, I'm getting the
following error when trying to call a web service:

System.Web.Services.Protocols.SoapException:
System.Web.Services.Protocols.SoapException: Server did not recognize the
value of HTTP Header SOAPAction:
http://tempuri.org/wsVIPN/wsProj/Get_Project_SearchResults.
at
System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest()
at
System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage
message)
at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type,
HttpContext context, HttpRequest request, HttpResponse response,
Boolean& abortProcessing)

Even when I delete the web reference and recreate it, I still get this
error. Any ideas on how to resolve this?

Thanks.
 
Ad

Advertisements

S

Steven Cheng[MSFT]

Hi Moondady,

Welcome to the ASPNET newsgroup.

From your description, I understand you've developed an ASP.NET webservice
which is consumed by a winform client application. Both ones are
constructed under .net framework 1.1. Recently, you upgrade the webservice
from ASP.NET 1.1 to ASP.NET 2.0, after that the 1.1 winform client broke
and reported the "Server did not recognize the value of HTTP Header
SOAPAction" error ,correct?

Based on my experience, since http SoapAction headeris used to identify the
webmethod of a certain webservice, the problem is likely due to the client
application is sending an unexpected SoapAction header to the service. And
in ASP.NET webservice, the SoapAction header will be determined by both the
service's namespace and the Action property set on the WebMethod attribute.


#WebServiceAttribute.Namespace Property
http://msdn2.microsoft.com/en-us/library/system.web.services.webserviceattri
bute.namespace(VS.80).aspx

#SoapDocumentMethodAttribute.Action Property
http://msdn2.microsoft.com/en-us/library/system.web.services.protocols.soapd
ocumentmethodattribute.action.aspx

Have you explicitly set this property for your webservice and the
webmethod? Also, for general troubleshooting, you can create a .net 2.0
webservice proxy to see whether it can work correctly. If it works, you can
compare the 2.0 client's generated proxy code with 1.1 client's code or you
can use some trace tools to capture the raw SOAP xml message sent by
different clients to find the difference between them.

Hope this helps.

Regards,

Steven Cheng
Microsoft Online Community Support


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

When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.

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


This posting is provided "AS IS" with no warranties, and confers no rights.



Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)
 
M

moondaddy

Thanks for the reply.

I'm very puzzled here. I created a new test winforms project in 1.1. it
just has a simple form with 1 button on it. the code behind uses the exact
same code to call the exact same web service as the winforms app described
in my original post. both winforms apps use a have identical web references
to the same web service. The test app works OK, but the original app fails.
both apps should be creating identical credentials and I have not edited any
attributes or name spaces.

What's even more puzzling is that the app having this trouble uses a
different web service to login which works OK. The login uses myLogin.asmx
and the method that fails uses someOtherWS.asmx (all of which run in the
same WS app.). However, the login runs from a different project
(myLoginProject) and the rest of the app runs in myMainProject.

to answer your last question, yes I have a .net 2.0 winforms test app which
successfully calls this ws, but I also have the above mentioned 1.1 test app
which successfully calls this ws. Can you tell me how I can capture the
text of each proxy to compare with the one failing?
 
M

moondaddy

I found the problem:

I have this winform 1.1 project where before I started changing the backend
to a .net 2.0 ws project, I copied the entire winform solution to a new
folder and work on this new solution as a staging solution. While I was
working in this new (copied) solution as the code executed, it would refer
back to the code in the old - original solution. This was starting to
really confuse me because when I stepped through the code, I would not see
the edits I had just made.

So fix it, I removed all the projects from the staging solution and re-added
them back in. This cleaned up all the reference issues.
 
Ad

Advertisements

S

Steven Cheng[MSFT]

Thanks for your followup Moondaddy,

Glad that you've figured out the issue.

Good luck!

Regards,

Steven Cheng
Microsoft Online Community Support


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

When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.

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


This posting is provided "AS IS" with no warranties, and confers no rights.



Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top