为什么在ASP.Net MVC应用程序中使用SignalR 2.x库时HTTPContext.Current.Session为空?

为什么在ASP.Net MVC应用程序中使用SignalR 2.x库时HTTPContext.Current.Session为空?,signalr,signalr-hub,signalr.client,Signalr,Signalr Hub,Signalr.client,我正在尝试从使用Signal R1.x tgo Signal R 2.x迁移我们的ASP.Net MVC应用程序。我刚刚发现了一个问题,它肯定会给我们的前进带来问题 我们的web应用程序基于MVC,并且大量使用HttpContext.Current.Session变量。 当使用Signalr1.x运行时,会话中的一切都很好 当我们升级到Signalr2.x时,会话突然为空 我在谷歌上搜索了一下,找到了关于这个问题的以下链接: 进一步的调查揭示了以下信息: 我可以想象,这将破坏大量基于ASP.

我正在尝试从使用Signal R1.x tgo Signal R 2.x迁移我们的ASP.Net MVC应用程序。我刚刚发现了一个问题,它肯定会给我们的前进带来问题

我们的web应用程序基于MVC,并且大量使用HttpContext.Current.Session变量。 当使用Signalr1.x运行时,会话中的一切都很好

当我们升级到Signalr2.x时,会话突然为空

我在谷歌上搜索了一下,找到了关于这个问题的以下链接:

进一步的调查揭示了以下信息:

我可以想象,这将破坏大量基于ASP.NETMVC的应用程序。 有什么解决办法吗

这真的是出于设计,还是使用oWin:>Startup::Configuration(){app.mapsigner();}在2.x中启动signar的结果

如果可能的话,我想解决这个问题,如果解决方案不那么痛苦,他们仍然会考虑移动到2。
Thinks?

由于会话状态会干扰同一用户同时发出的请求的处理,因此Signal内部不支持会话状态,WebSockets请求也不支持会话状态。在2.0中,该属性为null,因为在初始化会话状态模块之前处理信号器请求。这与1.0中基于System.Web的ASP.NET应用程序内部承载Signal的方式不同(在1.0中,它使用ASP.NET路由表中的路由,在2.0中,它使用Microsoft.OWIN.Host.SystemWeb提供的OWIN承载模块)


注意:这只会影响信号器类(集线器等)中会话的使用,而不会影响应用程序的其余部分。

如何纠正此问题
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.