繁体   English   中英

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

[英]How to solve HTTP status 405 “Method Not Allowed” when calling Web Services

我需要访问具有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编写的)

任何人都可以对这个问题有所了解吗?

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

我有同样的问题,但细节不同:

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

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

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

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

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

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

您需要启用HTTP激活

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

MethodNotAllowed等效于HTTP状态405. MethodNotAllowed指示在请求的资源上不允许请求方法(POST或GET)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM