首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在ASP HTTPContext.Current.Session MVC应用程序中使用SignalR 2.x库时SignalR为null?

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

Stack Overflow用户
提问于 2014-02-25 18:53:27
回答 1查看 3.4K关注 0票数 6

我正在尝试从使用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

代码语言:javascript
运行
复制
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。

有什么想法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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类(集线器等)中会话的使用,而不会影响应用程序的其余部分。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22023544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档