我正在尝试从使用SignalR1.xTGO SignalR 2.x迁移我们的ASP.Net MVC应用程序。我刚刚发现了一些问题,这肯定会给我们争取向前迈进带来问题。
我们的web应用程序是基于MVC的,并大量使用HttpContext.Current.Session变量。在使用SignalR 1.x运行时,一切都很好,会话也很好。
当我们升级到SignalR 2.x时,会话突然为空。
我搜索了一下,找到了关于这个问题的以下链接: HTTPContext.Current.Session is nul in SignalR...need alternate to Session state while using SignalR
进一步调查发现了以下信息: http://www.asp.net/signalr/overview/signalr-20/troubleshooting-and-debugging/troubleshooting
HTTPContext.Current.Session is null
This behavior is by design. SignalR does not support the ASP.NET session state,
since enabling the session state would break duplex messaging.
我可以想象,这将破坏许多基于ASP.MVC的应用程序。有什么解决办法吗?
这是真正的设计,还是使用oWin::>Startup::Configuration(){app.MapSignalR();}在2.x中启动signalR的结果?
如果可能的话,我想找出这一点,如果解决方案不是那么痛苦,他们仍然会考虑移到2.x。
有什么想法?
发布于 2014-02-25 19:19:07
会话状态在SignalR内部不受支持,因为它会干扰来自同一用户的同时请求的处理,而WebSockets请求也不支持它。在2.0中,属性为null,因为SignalR请求是在会话状态模块初始化之前处理的。这与SignalR在基于System.Web的ASP.NET应用程序中的托管方式发生了变化(在1.0中,它使用了ASP.NET路由表中的路由,在2.0中使用了Microsoft.Owin.Host.SystemWeb提供的自带托管模块)。
注意,这只会影响SignalR类(集线器等)中会话的使用,而不会影响应用程序的其余部分。
https://stackoverflow.com/questions/22023544
复制相似问题