为什么在ASP.NETMVC应用程序中使用SignalR 2.x库时HTTPContext.Current.Session为空? [英] Why is HTTPContext.Current.Session null using SignalR 2.x libraries in a ASP .Net MVC application?

查看:31
本文介绍了为什么在ASP.NETMVC应用程序中使用SignalR 2.x库时HTTPContext.Current.Session为空?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我们的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.NETMVC的应用程序。 是否有解决此问题的方法?

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

如果可能,我想解决这个问题,如果解决方案不是那么痛苦,他们仍然会考虑迁移到2.x。

想法?

SignalR中不支持

推荐答案

会话状态,因为它会干扰来自同一用户的同时请求的处理,并且WebSocket请求不支持该状态。在2.0中,该属性为NULL,因为SignalR请求是在会话状态模块初始化之前处理的。这与1.0相比,SignalR在基于System.Web的ASP.NET应用程序中的托管方式发生了变化(在1.0中,它使用ASP.NET路由表中的路由,在2.0中,它使用Microsoft.Owin.Host.SystemWeb提供的OWIN托管模块)。

注意:这仅影响从SignalR类(集线器等)中使用会话,而不影响应用程序的睡觉。

这篇关于为什么在ASP.NETMVC应用程序中使用SignalR 2.x库时HTTPContext.Current.Session为空?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆