如何在调用Web服务时解决HTTP状态405“方法不允许”

时间:2008-09-30 01:26:17

标签: c# .net web-services wse2.0

我需要访问具有WSE 2.0安全性的SOAP Web服务。我已经获得了所有生成的c#代理(源自Microsoft.Web.Services2.WebServicesClientProtocol),我正在应用证书但是当我调用方法时出现错误:

System.Net.WebException : The request failed with HTTP status 405: Method Not Allowed.
   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)

我已经完成了一些谷歌搜索,看来这是一个服务器配置问题。 然而,这个Web服务使用很多客户端没有任何问题(Web服务由新西兰电信提供,所以它必须正确配置。我相信它是用Java编写的)

有人能解释一下这个问题吗?

7 个答案:

答案 0 :(得分:18)

好的,发现了问题所在。我试图调用.wsdl网址而不是.asmx网址。 卫生署!

答案 1 :(得分:4)

我遇到了同样的问题,但细节不同:

我们使用的Url没有文件(.asmx)部分。在浏览器中调用Url就可以了。它也适用于通过Visual Studio设置URL的简单客户端。 但它没有动态设置Url!它给出了相同的405错误。

最后,我们发现将文件部分添加到Web Service Url可以解决问题。 也许是一个.Net框架错误?

答案 2 :(得分:4)

我发现这是因为WCF没有安装在IIS上。主要是必须在IIS See MSDN here.中映射.svc扩展名。使用ServiceModelReg工具完成安装。您总是希望验证是否已安装WCF,并且只要您获得新计算机或重新安装IIS,就会在IIS中映射.svc。

答案 3 :(得分:0)

嗯那些其他客户也使​​用C#/ .NET?

不允许的方法 - >这可能是一个REST服务,而不是SOAP Web服务吗?

答案 4 :(得分:0)

在我的情况下,问题是应用程序配置错误地形成/调用: 在配置中,服务URL使用“localhost”作为域名,但真正的主机名与我调用的URL不同:(所以我将配置中的“localhost”更改为我在URL中使用的域名。这就是全部!

答案 5 :(得分:0)

您需要启用HTTP激活

转到控制面板> Windows功能> .NET Framework 4.5高级服务> WCF服务> HTTP激活

答案 6 :(得分:-1)

MethodNotAllowedEquivalent到HTTP状态405. MethodNotAllowed表示请求的方法(POST或GET)不允许在请求的资源上。

问题出在你的角度uri是不完整或正确的地址wcf - .scv 检查您的proxy.enpoint或wcf client.enpoint uri是否正确。