我刚刚发现您无法访问 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/