Las*_*sen 3 asp.net-mvc-3 signalr
我最近在我的ASP.NET MVC3应用程序中从0.4.0更新到SignalR 0.5.2.在SignalR 0.5.2中,Context实例上的"User"属性是null用户断开连接时 - 这是设计的吗?
从下面的"立即窗口"快照中可以看出,我所知道Context的客户端断开连接的时间是断开连接的客户端的ConnectionId.
Context
{SignalR.Hubs.HubCallerContext}
ConnectionId: "... some connection id ..."
Headers: null
QueryString: null
RequestCookies: null
ServerVariables: null
User: null
Run Code Online (Sandbox Code Playgroud)
简化,我的SignalR Hub实现如下:
public class MyHub : Hub, IDisconnect, IConnected
{
// some other code
public Task Disconnect()
{
var user = Context.User; // <-- This is null
// more code
}
}
Run Code Online (Sandbox Code Playgroud)
总结一下 - 我忘了这里的东西,还是设计Context.User null?如果是这样 - 为什么?:)
我在SignalR维基中找到了答案.在其关于集线器的部分(https://github.com/SignalR/SignalR/wiki/Hubs)中,它指出:
每当客户端断开连接时,将在实现IDisconnect的所有集线器上调用Disconnect方法.调用此方法时,可以使用Context.ConnectionId访问断开连接的客户端. 注意:此方法从服务器调用,这意味着调用者对象上的状态,连接的任何状态,以及HubContext的用户和Cookie将不会被填充.