c# - 无法通过 SignalR Hub 访问 session 信息。是我的设计错了吗?

标签 c# asp.net-mvc-4 signalr

我刚刚发现您无法访问 SignalR Hub 中的当前 session 。

简化我的场景:我试着写一段聊天。

当前用户的名称保存在 session 中。

我使用 SignalR 更新(一组连接)每条新消息。

现在我发现我无法通过中心访问当前用户的名称。

我想可能有一些变通办法,但我的设计实现是错误的吗?

我不应该为此目的使用 SignalR 吗?或者我不应该以这种方式使用 Session 吗?

最佳答案

您不应将 Session 与 SignalR 一起使用(参见 SignalR doesn't use Session on server )。您可以通过连接 ID 来识别逻辑连接,您可以 map to user names .

潜在的问题是access to SessionState is serialized in ASP.NET以确保状态一致性,因此对集线器的每个请求都会阻止其他请求。过去,可以通过设置 EnableSessionstate to read-only 来限制只读访问(我假设(但无法确认,因为要点已经消失),这可以防止我描述的锁定问题),但是 support for this was dropped .另见 various other places SignalR 团队在其中发表了类似的声明。最后:官方有说法documentation关于 HTTPContext.Current.Session

关于c# - 无法通过 SignalR Hub 访问 session 信息。是我的设计错了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20522477/

相关文章:

json - SignalR 2.0.0 beta2 IJsonSerializer 可扩展性

c# - Silverlight:命名空间中不存在 Web

c# - WPF 弹出窗口

c# - 如何将 Excel 文件插入/检索到 SQL Server 2008 中的 varbinary(max) 列?

asp.net - 将 .net 项目转换为使用布局后页面顶部出现空白

asp.net - 几分钟后 Signalr 停止执行回调

android - 通过 android 模拟器连接到本地运行的 SignalR .netcore 服务器

c# - 我们可以在 c# 或 .net 支持的语言中将值类型转换为引用类型吗

c# - Razor 中 foreach 中的 html 和代码的混合

c# - UrlHelper.Action 方法未映射到具有第一个可变参数的正确路由