当前位置:  开发笔记 > 编程语言 > 正文

服务器无法识别HTTP标头SOAPAction的值

如何解决《服务器无法识别HTTP标头SOAPAction的值》经验,为你挑选了3个好方法。

这篇文章的下一部分的来源是:

http://bluebones.net/2003/07/server-did-not-recognize-http-header-soapaction/

(因为OP不想给予归属,并且感谢Peter)

请注意,bakert是文本的原作者,而不是OP.


在互联网上看到无处可以找到这个错误的解释我想我会分享我长期搜索这个错误的成果.

这意味着(至少在我的情况下)您使用SOAP访问Web服务并在HTTP请求中传递SOAPAction参数,该参数与服务期望的不匹配.

我得到了一个泡菜,因为我们将一个Web服务从一个服务器移动到另一个服务器,因此我在调用C#文件中更改了"命名空间"(不要混淆Web服务命名空间和.net命名空间)以匹配新服务器.但是服务器并不关心http //yournamespace.com/blah的实际网络现实,它只关心你发送它所说的你在服务器上所期望的内容.它并不关心实际上是否有任何东西.

所以基本上Web服务从http://foo.com/servicename移动到http://bar.com/servicename但Web服务的"命名空间"保持为http://foo.com/servicename,因为没有人改变了

而这只需要大约4个小时才能解决!

如果你遇到了类似的问题,但我在这里说的不行,请随时给我发bakert+web@gmail.com - 我不希望我的四个小时对任何人!



1> 小智..:

这篇文章的下一部分的来源是:

http://bluebones.net/2003/07/server-did-not-recognize-http-header-soapaction/

(因为OP不想给予归属,并且感谢Peter)

请注意,bakert是文本的原作者,而不是OP.


在互联网上看到无处可以找到这个错误的解释我想我会分享我长期搜索这个错误的成果.

这意味着(至少在我的情况下)您使用SOAP访问Web服务并在HTTP请求中传递SOAPAction参数,该参数与服务期望的不匹配.

我得到了一个泡菜,因为我们将一个Web服务从一个服务器移动到另一个服务器,因此我在调用C#文件中更改了"命名空间"(不要混淆Web服务命名空间和.net命名空间)以匹配新服务器.但是服务器并不关心http //yournamespace.com/blah的实际网络现实,它只关心你发送它所说的你在服务器上所期望的内容.它并不关心实际上是否有任何东西.

所以基本上Web服务从http://foo.com/servicename移动到http://bar.com/servicename但Web服务的"命名空间"保持为http://foo.com/servicename,因为没有人改变了

而这只需要大约4个小时才能解决!

如果你遇到了类似的问题,但我在这里说的不行,请随时给我发bakert+web@gmail.com - 我不希望我的四个小时对任何人!


有趣的是,人们在9年后碰到了这个.由于我的博文,我每个月都会收到几封关于此的电子邮件.感谢jcolebrand归属:)

2> 小智..:

我同意Sam的观点,即SOAP定义与预期不符.这里只有一个解决方案,我不得不为自己手动计算这个错误:

我的问题是我更改了Web方法的名称,但没有更改元数据标记中的"MessageName".

[WebMethod(MessageName = "foo")]
public string bar()
{

}

它应该是

[WebMethod(MessageName = "foo")]
public string foo()
{

}

希望有人帮助



3> 小智..:

在调用.asmx/wcf网络服务时,请注意以下几点:

    命名空间区分大小写,SOAP请求必须与声明WebService的相同命名空间一起发送.

例如,对于声明如下的WebService

[WebService(Namespace = "http://MyDomain.com/TestService")] 
public class FooClass : System.Web.Services.WebService 
{
   [WebMethod]   
    public bool Foo( string name)    
     {

      ...... 
     }

 }

在调用时,SOAP请求必须为命名空间维护相同的大小写.有时我们会忽略大小写敏感性.


  
     
     string      
     
   

    命名空间不必与服务的托管URL相同.命名空间可以是任何字符串.

例如,上面的服务可以在http://84.23.9.65/MyTestService上托管,但是在从客户端调用Web服务时,名称空间应该与serice类相同,即http://MyDomain.com/TestService

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有