SignalR - WebSockets到ServerSentEvents - 问题

时间:2013-11-19 17:04:36

标签: websocket signalr server-sent-events

我在Windows Server 2012上使用带有IIS8的SignalR v2.0, 我通过以下文章在服务器上启用了WebSockets, http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-websocket-protocol-support

但是signalR首先尝试使用websockets,然后将传输更改为serverSentEvents


谈判回复为TryWebSockets=True

与websockets连接的响应头是

  • 升级:Websocket
  • X-Content-Type-Options:nosniff
  • 连接:升级
  • ,状态码为101(交换协议)


我所有的解决方案项目都在使用.NET4.5

我还在事件查看器中看到以下消息(不确定它是否相关)

  

异常信息:       异常类型:InvalidOperationException       异常消息:无法识别的用户身份。在活动的SignalR连接期间,用户身份不能更改。在   Microsoft.AspNet.SignalR.PersistentConnection.GetConnectionId(HostContext   context,String connectionToken)at   Microsoft.AspNet.SignalR.PersistentConnection.ProcessRequest(HostContext   上下文)   Microsoft.AspNet.SignalR.Hubs.HubDispatcher.ProcessRequest(HostContext   上下文)   Microsoft.AspNet.SignalR.PersistentConnection.ProcessRequest(IDictionary`2   环境)   Microsoft.AspNet.SignalR.Owin.Middleware.HubDispatcherMiddleware.Invoke(IOwinContext   上下文)   Microsoft.Owin.Mapping.MapMiddleware.d__0.MoveNext()   ---从抛出异常的先前位置开始的堆栈跟踪结束--- at   Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.StageAsyncResult.End(IAsyncResult的   一只老鼠   Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.EndFinalWork(IAsyncResult的   一只老鼠   System.Web.HttpApplication.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   在System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,   布尔和放大器; completedSynchronously)

出了什么问题?

1 个答案:

答案 0 :(得分:0)

您无法在活动连接期间更改用户的身份。这意味着你可能正在做一些事情,比如登录用户而不先停止连接。