【问题标题】:WCF The request failed with HTTP status 405: Method Not AllowedWCF 请求失败,HTTP 状态为 405:不允许方法
【发布时间】: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();

我该如何解决这个问题?

【问题讨论】:

    标签: wcf http-status-code-405


    【解决方案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。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-15
        • 2017-05-19
        • 2020-05-12
        • 2021-09-19
        • 1970-01-01
        • 2021-06-04
        • 2020-04-29
        • 1970-01-01
        相关资源
        最近更新 更多