【问题标题】:WCF Webservice does not support HTTP version 2WCF Web 服务不支持 HTTP 版本 2
【发布时间】:2015-06-03 14:51:16
【问题描述】:

我正在尝试将请求从 Fiddler 发送到我的 WCF 网络服务。
当我发送 HTTP/1.2 请求时,它可以工作,但是当我尝试发送 HTTP/2 请求时,我得到了响应:

HTTP 错误 505。请求中的 HTTP 版本不受支持

我的合同是这样定义的:

[WebInvoke(Method = "POST", UriTemplate = "/GetEmployees", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
string GetEmployees(Stream jsonParameter);

我的端点是这样定义的:

<endpoint address="XMLService" behaviorConfiguration="restPoxBehavior"
 binding="webHttpBinding" bindingConfiguration="" contract="WCF_SOAP_REST_Service.IService" />

 <behavior name="restPoxBehavior">
          <webHttp />
        </behavior>

我做错了什么?

【问题讨论】:

    标签: c# web-services wcf http


    【解决方案1】:

    HTTP/2 是全新的......尚未完全支持! Wikipedia 声称,我猜你使用的 IIS 仅支持 Windows 10 Beta 上的 HTTP/2;你的错误是完全正常的。

    【讨论】:

      【解决方案2】:

      我做错了什么?

      您使用的是过时的 API。不要使用 WCF REST,将 ASP.NET WebAPI 用于新的 REST 服务。

      后者与托管无关,因此只要您找到支持 HTTP/2 和 WebAPI(通过 OWIN 或其他方式)的 Web 服务器,您就可以在 HTTP/2 上运行您的 REST API。

      【讨论】:

        【解决方案3】:

        我正在查看 http/2 (en.wikipedia.org/wiki/HTTP/2) 的差异并看到两个重大变化 1) 不支持 http 1.1 块模式 2) 使用 TLS 1.2 或更高版本(即TLS 1.3)。 fiddler 嗅探器功能应该适用于任何连接(尽管新协议的解码可能无法解码)。如果 fiddler 连接工具正在发送块模式 1.1 或使用较旧的 TLS 1.1,它将无法工作。所以这意味着你不能用 fiddler 测试你的 http/2 wcf 服务。试试Firefox之类的浏览器或... 我不确定,但我想我在 wcf 上实现了 http/2。 here你可以读矿石。

        【讨论】:

          猜你喜欢
          • 2015-04-15
          • 2015-09-15
          • 1970-01-01
          • 2015-02-13
          • 1970-01-01
          • 1970-01-01
          • 2018-05-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多