Signalr 信号无效操作异常

Signalr 信号无效操作异常,signalr,invalidoperationexception,Signalr,Invalidoperationexception,我最近开始在ASP.NETMVC3应用程序中使用SignalR库。我能够使用信号R向客户端发送消息。但我注意到,如果我从另一个浏览器登录到应用程序,会出现以下错误- 异常类型:InvalidOperationException 异常消息:无法识别的用户标识。在活动信号器连接期间,用户标识不能更改 服务器堆栈跟踪: 位于Microsoft.AspNet.signal.PersistentConnection.GetConnectionId(主机上下文,字符串connectionToken) 位于M

我最近开始在ASP.NETMVC3应用程序中使用SignalR库。我能够使用信号R向客户端发送消息。但我注意到,如果我从另一个浏览器登录到应用程序,会出现以下错误-

异常类型:InvalidOperationException 异常消息:无法识别的用户标识。在活动信号器连接期间,用户标识不能更改

服务器堆栈跟踪: 位于Microsoft.AspNet.signal.PersistentConnection.GetConnectionId(主机上下文,字符串connectionToken) 位于Microsoft.AspNet.signal.PersistentConnection.ProcessRequest(主机上下文) 在Microsoft.AspNet.signal.Owin.CallHandler.Invoke(IDictionary
2环境)
位于Microsoft.AspNet.signal.Owin.Handlers.HubDispatcherHandler.Invoke(IDictionary
2环境) 在Microsoft.Owin.Host.SystemWeb.OwinCallContext.Execute()中 位于Microsoft.Owin.Host.SystemWeb.OwinHttpHandler.BeginProcessRequest(HttpContextBase httpContext、AsyncCallback回调、对象extraData)

在某些情况下,我开始反复出现这个错误。事件日志在几分钟内就会被填满。
我重写了hub类中的OnConnect、OnDisconnect函数,并从Java脚本启动了hub连接

信令器不允许用户在保持连接的同时更改。这是因为信号器的connectionToken充当反xsrf令牌

看起来您的“其他”浏览器实际上必须是另一个浏览器窗口。当您在另一个窗口中登录应用程序时,它会更改两个浏览器窗口中的ASP.NET窗体身份验证cookie(从而更改您的身份)


任何正在进行的信号器连接在浏览器的身份验证cookie更改后尝试重新连接时,都会遇到上述InvalidOperationException。如果正在使用长轮询传输,信号器可能会非常频繁地尝试重新连接。一旦由于异常导致重新连接失败,信号器将重复尝试重新连接约40秒,然后信号器将放弃并断开连接。

关于解决此问题的最佳方法的任何建议,以便在旧窗口中重新建立连接,但使用新身份?在用户身份更改后,您需要手动停止并重新启动信号器连接。