WCF Webservice不支持HTTP版本2

时间:2015-06-03 14:51:17

标签: c# web-services wcf http

我试图将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>

我做错了什么?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

  

我做错了什么?

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

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

答案 2 :(得分:0)

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