是否有解决方案在SignalR 2.x版本中使用System.Web HTTPContext SessionId?

时间:2014-02-28 17:04:26

标签: asp.net-mvc signalr signalr-hub signalr.client

我们正在尝试从SignalR 1.x迁移到SignalR 2.x并遇到一些问题。

该应用程序一直使用SignalR 1.x在后端和前端客户端之间进行“实时”(推送)通信。在SignalR 1.x中,我们可以访问System.Web HttpContext会话状态。具体来说,我们使用SessionId来跟踪和管理有效的SignalR连接。

我们现在正尝试升级到SignalR 2.x.不幸的是,不再支持访问System.Web HttpContext。这是因为在初始化会话状态模块之前处理SignalR请求。

现在我们的任务是提出一些其他方法来独特地跟踪SessionId以外的连接。一种想法是从客户端获取一些东西并转入我们订阅SignalR通知的初始请求。我正在查看这些请求cookie,并想知道是否有我可以在那里使用的东西。

对此有何想法?

谢谢, JohnB

1 个答案:

答案 0 :(得分:1)

SignalR使用Connections而不是Sessions。根据{{​​3}}网站,“连接到集线器的每个客户端都会传递唯一的连接ID。您可以在集线器上下文的Context.ConnectionId属性中检索此值。”

此外,Context仍然具有User属性,保留用户的身份(以及用户名)Context.User.Identity.Name

因此,您可以使用ConnectionId来识别用户,而不是使用Sessions。

此页面详细介绍:http://asp.net/signalr

相关问题