SignalRv2 - 将值传递给Hub

时间:2015-05-22 17:40:26

标签: asp.net signalr signalr-hub

我会尽力解释这一点。在我的Hub代码中,我已经实例化了 ConnectionMapping 类。它取自http://www.asp.net/signalr/overview/guide-to-the-api/mapping-users-to-connections#inmemory

ConnectionMapping 需要其字典的唯一键。我有一个名为default.aspx.cs的webform代码隐藏。在此代码中,我将在 Page_Load 事件中获得一个唯一的登录用户名。如何将此用户名传递给Hub以将其添加到 ConnectionMapping

我试过了。

IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<MyHub>();

但我不知道这样做后我在做什么。帮助

1 个答案:

答案 0 :(得分:1)

简短的回答是,你不是。不是你的代码。问题是这个序列:

  • 客户请求页面
  • 服务器端代码运行(Page_Load
  • 生成的HTML / JS发送到客户端
  • 客户端连接到SignalR

此时,您可能会添加到ConnectionMapping。问题当然是Page_Load中的任何数据/变量都不再可用,并且您无法将刚收到的连接映射到该页面请求,即使它们是。

您的网站需要保留一些信息,可能是该用户名,并在连接时将其传递到集线器(可能通过查询字符串)。数据甚至可以作为Page_Load事件的一部分存储在页面中(在隐藏的div中或通过其他一些机制)。

现在您可以同时获得这两条信息,并且可以正常添加到映射中。