我会尽力解释这一点。在我的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>();
但我不知道这样做后我在做什么。帮助
答案 0 :(得分:1)
简短的回答是,你不是。不是你的代码。问题是这个序列:
Page_Load
)此时,您可能会添加到ConnectionMapping
。问题当然是Page_Load
中的任何数据/变量都不再可用,并且您无法将刚收到的连接映射到该页面请求,即使它们是。
您的网站需要保留一些信息,可能是该用户名,并在连接时将其传递到集线器(可能通过查询字符串)。数据甚至可以作为Page_Load
事件的一部分存储在页面中(在隐藏的div中或通过其他一些机制)。
现在您可以同时获得这两条信息,并且可以正常添加到映射中。