SignalR WebSocket握手:缺少Sec-WebSocket-Accept标头

时间:2016-04-29 14:18:02

标签: c# asp.net websocket signalr

ASP.NET 5 RC1上的SignalR 3-RC1用户

尝试使用websocket时出现以下错误。

使用Chrome 50.0.2661.87

标题如下:

请求标题:
日期:2016年4月29日星期五13:51:54 GMT
服务器:红隼
传输编码:分块
升级:WebSocket的
X-Content-Type的选项:nosniff
X供电-通过:ASP.NET

响应标题:
Accept-Encoding:gzip,deflate,sdch
接受语言:EN-US,EN; Q = 0.8,FR; Q = 0.6
缓存控制:无缓存
连接方式:升级
Cookie:... ASP.NET cookie
DNT:1个
主持人:host.tld
来源:http://host.tld
附注:无缓存
仲的WebSocket的扩展:permessage,放气; client_max_window_bits
仲WebSocket的密钥:liIKiClt7Z057EwteJYJXQ ==
仲的WebSocket-版本:13
升级:WebSocket的
User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 50.0.2661.87 Safari / 537.36

使用Microsoft.AspNet.WebSockets.Server 1.0.0-rc1

服务器设置: Windows Server 2012 R2 IIS 8.5

我能做些什么来解决这个问题?

2 个答案:

答案 0 :(得分:13)

正如Hockey J评论的那样,我在GitHub上回答了我的问题,但不是在这里。

要解决此问题,请转到Windows功能>万维网服务>应用程序开发功能并启用Websocket协议。 IIS重置并重新加载页面

请参阅https://github.com/SignalR/SignalR/issues/3691

答案 1 :(得分:1)

服务器的实现并不好,但您可以通过在请求中包含Sec-WebSocket-Version HTTP标头来解决此问题。为了符合规范,还需要Connection标头和{{1}}标头。有关详细信息,请参阅RFC 6455