【发布时间】:2014-05-06 03:39:15
【问题描述】:
当我尝试调用 Web 服务上的方法时出现异常:
System.Web.Services.Protocols.SoapException: Server did not recognize the value of HTTP Header SOAPAction: http://localhost:53460/3Development/MyWebService.asmx/GetBasePath.
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)
Web 服务的命名空间:
[WebService(Namespace = "http://internaltest.temp.us/MyWebService.asmx")]
我做了一些研究,发现这个异常流动是因为项目中引用的 web 服务的命名空间与服务器 web 服务的命名空间不同,但是我尝试删除 web 引用并在项目中再次添加它,但是结果还是一样。
我的情况类似于下面的文章:
http://bluebones.net/2003/07/server-did-not-recognize-http-header-soapaction/
来自文章:
所以基本上网络服务是从http://foo.com/servicename 到 http://bar.com/servicename 但 Web 服务的“命名空间” 保持为http://foo.com/servicename,因为没有人更改它。
问题是:
如何更改网络引用的命名空间?
【问题讨论】:
-
您能否提供原始请求的捕获(使用 Fiddler 之类的工具)?此外,一旦您收到请求,请尝试更改命名空间并使用 SoapUI 向您的服务发送请求以确保其正常工作。
-
刚刚更换了整个webreference的命名空间,问题解决了
标签: c# asp.net web-services exception soap