gpt4 book ai didi

信号器 InvalidOperationException

转载 作者:行者123 更新时间:2023-12-02 14:56:11 25 4
gpt4 key购买 nike

我最近开始在 ASP.Net MVC 3 应用程序中使用 Signal R 库。我可以使用 Signal R 向客户端发送消息。但我注意到,如果我从另一个浏览器登录该应用程序,我会收到以下错误 -

异常类型:InvalidOperationException异常消息:无法识别的用户身份。在事件 SignalR 连接期间,用户身份无法更改。

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

在某些情况下,我开始反复收到此错误。事件日志会在几分钟内变满。我重写集线器类中的 OnConnect、OnDisconnect 函数,并从 Java 脚本启动集线器连接。

最佳答案

SignalR 不允许用户的 Identity在保持连接的同时进行更改。这是因为 SignalR 的 connectionToken 充当反 xsrf token 。

看来您的“其他”浏览器实际上一定只是另一个浏览器窗口。当您在另一个窗口中登录应用程序时,它会更改两个浏览器窗口中的 ASP.NET 表单例份验证 cookie(以及您的身份)。

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

关于信号器 InvalidOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16487794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com