gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 18:08:03 26 4
gpt4 key购买 nike

我正在尝试从使用 Signal R1.x tgo SignalR 2.x 迁移我们的 ASP.Net MVC 应用程序。我刚刚发现了问题,这肯定会导致我们在前进的过程中遇到问题。

我们的 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。

想法?

最佳答案

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

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

关于signalr - 为什么 HTTPContext.Current.Session 在 ASP .Net MVC 应用程序中使用 SignalR 2.x 库为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22023544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com