我已经设置了健康监测,我收到了下面的错误。
在Safari浏览器中,我正在接收下面的Signalr错误,在其他浏览器中没有收到此错误。
奇怪的是,当我从一个页面导航到另一个页面时,这个错误实际上将注销用户,并将他们发送到登录页,这是在他们登录之后。
有人知道为什么会发生这种事吗?
** Application Information **
---------------
Application domain: /LM/W3SVC/15/ROOT-1-130329090058437500
Trust level: Full
Application Virtual Path: /
Application Path: C:\inetpub\wwwroot\alumcloud.com\ Machine name: AFBS-WEB1
** Events **
---------------
Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 12/30/2013 2:32:24 PM
Event time (UTC): 12/30/2013 8:32:24 PM
Event ID: a243cb6cf5e24be8bfa0d1bec6e77812 Event sequence: 211 Event occurrence: 2 Event detail code: 0
Process information:
Process ID: 924
Process name: w3wp.exe
Account name: NT AUTHORITY\NETWORK SERVICE
Exception information:
Exception type: System.InvalidOperationException
Exception message: Unrecognized user identity. The user identity cannot change during an active SignalR connection.
Request information:
Request URL: http://www.alumcloud.com/signalr/abort?transport=serverSentEvents&connectionToken=xHLBS1B7LGOjUWkVos29QlnBuMwBfTg%2BNQuEDmrhy%2BADr45Yw0iDIHCh1nX8omumVA%2F1eFje774jLVE%2BOId8ab4cJJ3r1hZ8DGlq23yA0WsGk0biYy7JYmnxM2hqu2cw&connectionData=%5B%7B%22name%22%3A%22alumchathub%22%7D%5D
Request path: /signalr/abort
User host address: 71.244.XXX.XXX
User: XXXXXXXXXXXX
Is authenticated: True
Authentication Type: Forms
Thread account name: NT AUTHORITY\NETWORK SERVICE
Thread information:
Thread ID: 22
Thread account name: NT AUTHORITY\NETWORK SERVICE
Is impersonating: False
Stack trace: at Microsoft.AspNet.SignalR.PersistentConnection.GetConnectionId(HostContext context, String connectionToken)
at Microsoft.AspNet.SignalR.PersistentConnection.ProcessRequest(HostContext context)
at Microsoft.AspNet.SignalR.Hubs.HubDispatcher.ProcessRequest(HostContext context)
at Microsoft.AspNet.SignalR.PersistentConnection.ProcessRequest(IDictionary`2 environment)
at Microsoft.Owin.Mapping.MapMiddleware.<Invoke>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.EndFinalWork(IAsyncResult ar)
at System.Web.HttpApplication.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)发布于 2013-12-31 00:52:17
由于向/signalr/abort?.发出了请求,所以似乎已经调用了connection.stop。这可能是因为您直接调用了connection.stop,或者是因为SignalR间接地为您调用了connection.stop,因为用户使用SignalR连接从页面导航。
异常消息(“无法识别的用户标识。在活动SignalR连接期间用户标识不能更改”)。指示用户的IIdentity在启动和停止SignalR连接之间发生了更改。
这种情况可能有多种原因,其中最常见的原因可能是ASP.NET窗体auth过期,导致用户身份未经身份验证。其他原因可能是SignalR连接正在进行时用户注销、登录或切换用户。
SignalR不允许用户在持续连接期间更改IIdentity,以帮助防止CSRF攻击。
对/signalr/abort的请求?是由SignalR客户端发出的Ajax请求。SignalR客户端不会根据中止请求的响应采取任何操作,因此我不会期望失败的中止会导致任何类型的重定向。
https://stackoverflow.com/questions/20847336
复制相似问题