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

7
我有一个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个回答

4
请检查您的IIS扩展,特别是与.wsdl相关的扩展是否有效:
在IIS中:
- 查看您的站点属性。 - 在主目录选项卡中,单击“配置”。 - 单击添加(我的路径是“C:\ Program Files(x86)\ Common Files \ MSSOAP \ BINARIES \ SOAPIS30.DLL”) - 将扩展名设置为.WSDL,并允许“获取”和“发布”。 - 选择“脚本引擎”和“验证文件是否存在”。
以上就是全部步骤。

1
正如我所提到的,它是托管在Windows服务应用程序上而不是IIS上。 - mrtaikandi
1
我的开发环境中缺少SOAPIS30.DLL文件,我遇到了类似的问题。你知道在哪里可以获取这个DLL文件吗?它属于哪个SDK? - Danielb
2
回答自己的问题,该DLL来自已弃用的Microsoft SOAP Toolkit。 - Danielb

1
如果您正在使用WCF REST服务,您应该像这样定义您的契约方法:
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json)]
string CheckService();

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

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接