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

2023-12-20

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

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

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

我做了一些谷歌搜索,发现了有关该问题的以下链接: SignalR 中的 HTTPContext.Current.Session 为 null...使用 SignalR 时需要替代会话状态 https://stackoverflow.com/questions/20881591/httpcontext-current-session-is-nul-in-signalr-need-alternate-to-session-state

进一步调查发现以下信息: http://www.asp.net/signalr/overview/signalr-20/troubleshooting-and-debugging/troubleshooting 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 的应用程序。 有什么解决方法吗?

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

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

想法?


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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么在 ASP .Net MVC 应用程序中使用 SignalR 2.x 库时 HTTPContext.Current.Session 为 null? 的相关文章

  • SignalR - 无法建立 SSL/TLS 安全通道的信任关系

    我正在尝试从服务器代码调用我的 signalR hub 方法 但它给了我一个错误 无法建立 SSL TLS 安全通道的信任关系 我的服务器端代码是这样的 private void InvokeNotification string meth
  • 将 Autofac 与 SignalR 结合使用时出现范围错误

    我正在尝试注入HttpContextBase在我的 SignalR 中心 public class EventHub Hub IDisconnect private readonly HttpContextBase httpContextB
  • 从领域服务和应用层访问 SignalR

    这直接关系到从应用程序服务层调用 SignalR Hub https stackoverflow com questions 55472303 is calling a signalr hub from the application se
  • SignalR:使用 GlobalHost.ConnectionManager 发送数据不起作用

    我有一个这样的中心 public class MessageHubBub Hub public void ServerMethod Clients All sayHi hello GlobalHost ConnectionManager G
  • SignalR 和 Pusher 之间的区别

    我想使用 React 作为前端技术创建一个 Web 应用程序 该应用程序的要求是服务器能够向所有客户端更新有关更改的信息 不必是精确的实时时间 但应在不超过 10 秒后更新 像客户端每隔几秒向服务器请求更新这样的解决方案是不可能的 要求 1
  • 不使用jquery实现signalR

    是否可以在不使用 Jquery 的情况下实现 SignalR 我想为 Titanium 创建一个模块 但我不知道 SignalR 对 DOM 的依赖程度如何 jQuery 只用于 ajax 请求吗 你认为这有多难 嗯 这并非不可能 但这需要
  • 请求线程外部的 ASP.NET Core RC2 SignalR Hub 上下文

    我目前正在尝试RC2释放ASP NET Core我遇到了一个问题SignalR 我需要能够在请求线程之外向客户端发送消息 现在 在完整的 NET 框架中 您可以执行以下操作 var context GlobalHost Connection
  • SignalR 连接到多个服务器

    可以使用 Javascript 客户端连接到多个SignalR服务器 例如
  • SignalR cookie 未从客户端发送

    我有一个从客户端发送的 cookie 用作我的 MVC Web 服务的一部分 但是现在我已将集线器集成到此应用程序中 集线器不会发送 cookie 而 mvc 应用程序会发送该 cookie 现在 在阅读其他类似的问题 不是很多 后 coo
  • 如何修复信号器的 ChunkLoadError

    我在本地运行我的 nx 站点时遇到问题 任何使用 signalR 的联合应用程序都开始抛出 ChunkLoadError 我尝试过更改 signalR 的版本 重新加载 清除缓存并单独运行我的联合应用程序 结果总是一样的 Uncaught
  • SignalR:连接建立时服务器如何正确订阅组

    我已经查看了几个地方 但仍然找不到关于如何使用组的明确说明 我正在使用组进行过滤 仅将消息传递给客户端子集 我想将客户端加入服务器端的组OnConnected事件 客户端不需要知道它属于哪个组 问题 我是否也应该覆盖OnReconnecte
  • 信号器 CORS 问题

    在我的服务器端 我使用带有信号器的 Web api 2 在我的客户端 我使用的是 angularjs 这是我启动信号连接时的 http 请求 gt GET gt http example com signalr negotiate clie
  • 在集线器外部获取 SignalR 用户 (Hub.Context)

    有没有办法在集线器之外获取当前的 signalR 请求用户 我可以在集线器方法内部使用 Hub Context User 但是如果集线器方法调用任何其他底层 Wcf 服务调用 附加的BehaviorExtensionElement 用于添加
  • SignalR 无法连接到 SSL 上的 Azure Redis

    我目前在 Azure 上托管我的 redis 缓存服务器 并让 signalR 依赖它作为骨干 使用以下内容 GlobalHost DependencyResolver UseRedis 服务器 端口 密码 eventKey 这可以在端口
  • 如何在 asp.net mvc 4 中使用 signalr v2 beta

    v2 之前 RouteTable Routes MapHubs 在 v2 中 MapHubs 不再存在 wiki 说添加一个 Startup 类和一个 Configuration 方法以及对 app MapHubs 的调用 namespac
  • 由于 Azure ADB2C,Blazor 服务器 SignalR 集线器在 StartAsync 上失败

    我创建了一个 Blazor 服务器应用程序 以开始学习 Blazor 和一些更新的技术 我遵循了 Microsoft 提供的集线器聊天教程 事情进展顺利 然后我添加了一些基本的 cookie 身份验证 事情仍然在进展中 然后 我按照 Car
  • 服务器到 Phonegap 推送:SignalR 与 Azure 通知中心

    好吧 我在继续开发 Phonegap 应用程序时陷入了两难境地 对于实时事件通知 我应该使用 Azure 通知中心还是 SignalR 据我了解 SignalR 通过使用 Web Sockets 非常适合实时 Web 应用程序 而通知中心可
  • Firefox 中的 Signalr 连接意外中止

    我正在使用 SignalR 具有跨域请求 2 3 0 版 用于集成到 ASP NET 站点的网络聊天 一切正常 但我发现 SignalR 连接的奇怪行为 当我单击聊天选项卡中的引用进行文件下载时 SignalR 连接被中止 并且在我的 Hu
  • RavenDB 和 SignalR Nuget 包依赖项冲突

    基本冲突 SignalR 希望 Newtonsoft Json 版本为 4 0 7 或更高版本 而 RavenDB 希望版本等于 4 0 5 这显然意味着它们不能并排安装 因此 除了从其中之一下载源代码并在本地计算出依赖项 然后必须签入从中
  • 显示 div 内的用户名列表

    我是 jQuery 新手 在我的项目中 我创建了一个类User其中代码如下所示 static ConcurrentDictionary

随机推荐