2014-02-25 106 views
5

我试图从使用Signal R1.x tgo SignalR 2.x迁移我们的ASP.Net MVC应用程序。我刚刚发现问题,这肯定会导致我们在向前迈进时遇到问题。为什么HTTPContext.Current.Session在ASP .Net MVC应用程序中使用SignalR 2.x库?

我们的Web应用程序是基于MVC的,并大量使用HttpContext.Current.Session变量。 使用SignalR 1.x运行时,一切都很好,并且可以在Session中使用。

当我们升级到SignalR 2.x时,Session突然无效。

我做了一些谷歌搜索,发现关于这个问题下面的链接: 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 .Net MVC应用程序。 有没有解决这个问题的方法?

这是真正的设计,还是它使用oWin ::> Startup :: Configuration(){app.MapSignalR();}在2.x中启动signalR的结果?

如果可能的话,我想弄清楚,如果解决方案不是那么痛苦,他们仍然会考虑转向2.x.

想法?

回答

6

在SignalR中不支持会话状态,因为它会干扰来自同一用户的同时请求的处理,并且不受WebSockets请求支持。在2.0中,该属性为空,因为SignalR请求在会话状态模块初始化之前处理。这是SignalR托管在基于System.Web的ASP.NET应用程序内部的1.0版本(1.0版本中它在ASP.NET路由表中使用了一个路径,在2.0版本中它使用了由Microsoft.Owin提供的OWIN托管模块。 Host.SystemWeb)。

请注意,这仅影响从您的SignalR类(集线器等)中使用会话,而不会影响应用程序的其余部分。

+3

如何解决此问题 – SandhiyaSomeshwaran

相关问题