【发布时间】:2017-06-18 07:55:28
【问题描述】:
我有一个 ASP.NET MVC 4 应用程序 (.NET 4.5),并且 SIgnalR 可以很好地处理基于表单的身份验证(通过 IIS/IIS Express 托管)
一旦我将应用程序更改为 Windows 集成身份验证(“web.config”中的<authentication mode="Windows"/>),它就会停止工作。
jquery.signalR-2.2.2.min.js:9 WebSocket 连接到
ws://localhost:51030/signalr/connect?transport=webSockets&blhablahblah失败:WebSocket 握手期间出错:意外响应代码:403
将[Authorize]属性添加到我的集线器后,错误变为
到
ws://localhost:51030/signalr/connect?transport=webSocketsblahblah的WebSocket 连接失败:HTTP 身份验证失败;没有可用的有效凭据
应用程序的其他部分工作正常,在服务器上启用了 windows-auth 并且可以工作,等等。
我该如何解决?
如果由于某种原因无法解决(可能是 Chrome 不支持 websocket 连接上的 Windows 身份验证或其他原因) - 为什么不回退到非 websocket 协议? 以及如何我要强制回退吗?
更新:我创建了一个 github 问题 https://github.com/SignalR/SignalR/issues/3953。问题不在于我无法连接。问题是我无法处理错误以回退到另一个传输。 .fail() 和 .error() 都没有被调用。 Try-catch 也无济于事。
【问题讨论】:
标签: asp.net websocket signalr windows-authentication ntlm