WCF 请求失败,HTTP 状态为 405:不允许方法
Posted
技术标签:
【中文标题】WCF 请求失败,HTTP 状态为 405:不允许方法【英文标题】:WCF The request failed with HTTP status 405: Method Not Allowed 【发布时间】:2010-09-26 23:28:47 【问题描述】:我有一个托管在 Windows 服务上的 WCF 服务,并使用 BasicHttp 端点为已连接到它的 Windows Mobile 设备提供服务。
问题在于设备模拟器。我可以连接到该服务并毫无问题地使用它,但可以使用实际设备。我收到错误:
WCF 请求失败,HTTP 状态为 405:方法不允许。
我使用以下代码来实现该服务。
BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
basicHttpBinding.UseDefaultWebProxy = false;
m_ServiceHost.AddServiceEndpoint(typeof(IKooft), basicHttpBinding, "KooftService");
m_ServiceHost.Open();
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:检查您的 IIS 扩展,尤其是 .wsdl 的扩展是否有效:
在 IIS 中:
查看您网站的属性。 在主目录选项卡中,单击 配置。 点击添加(我的路径是 "C:\Program 文件 (x86)\Common 文件\MSSOAP\BINARIES\SOAPIS30.DLL") 将扩展名设置为 .WSDL 并允许 “获取”和“发布” 选择“脚本 引擎”和“验证文件是否存在”应该是这样的。
【讨论】:
正如我所提到的,它托管在 Windows 服务应用程序而不是 IIS 上。 SOAPIS30.DLL 在我的开发框中丢失,我遇到了类似的问题。你知道我可以从哪里得到那个DLL吗?它属于什么 SDK? 回答我自己的问题,即 DLL 来自已弃用的 Microsoft SOAP Toolkit。【参考方案2】:如果您使用 WCF REST 服务,您应该像这样定义您的合同方法:
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json)]
string CheckService();
特别注意WebInvoke
属性和Method="POST"
。
【讨论】:
【参考方案3】:使用 WCF 时,您可能还需要将 .svc 文件类型映射到 IIS 中的 aspnet_isapi.dll。
【讨论】:
以上是关于WCF 请求失败,HTTP 状态为 405:不允许方法的主要内容,如果未能解决你的问题,请参考以下文章
AngularJS:$http 服务 GET 到 php 服务器:请求方法:选项,状态代码:405 方法不允许
WebApi Post 方法总是返回“请求的资源不支持 http 方法 'GET'。”状态:405 方法不允许
这是啥意思? “加载资源失败:服务器响应状态为 405(不允许方法)”