WCF请求失败,HTTP状态为405:方法不允许

时间:2008-12-15 14:17:16

标签: wcf http-status-code-405

我有一个WCF服务,该服务已托管在Windows服务上,并使用BasicHttp端点为已连接到它的Windows Mobile设备提供服务。

问题在于使用设备模拟器。我可以连接到服务并使用它没有任何问题,但使用实际的设备。我收到错误:

  

WCF请求失败,HTTP状态为405:方法不允许。

我使用以下代码来实现该服务。

BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
basicHttpBinding.UseDefaultWebProxy = false;

m_ServiceHost.AddServiceEndpoint(typeof(IKooft), basicHttpBinding, "KooftService");
m_ServiceHost.Open();

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

检查您的IIS扩展名,尤其是.wsdl的扩展名有效:

在IIS中:

  • 查看您网站的属性。
  • 在“主目录”选项卡中,单击 组态。
  • 点击添加(我的路径是 “C:\ Program Files(x86)\ Common Files \ MSSOAP \ BINARIES \ SOAPIS30.DLL“)
  • 将扩展名设置为.WSDL并允许 “获取”和“发布”
  • 选择“脚本” 引擎“和”验证该文件存在“

应该是它。

答案 1 :(得分:1)

如果您使用的是WCF REST服务,则应该像这样定义合同方法:

[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json)]
string CheckService();

特别注意WebInvoke属性和Method="POST"

答案 2 :(得分:0)

使用WCF时,您可能还需要将.svc文件类型映射到IIS中的aspnet_isapi.dll。