我试图将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>
我做错了什么?
答案 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您可以阅读矿石。