SignalR 0.5.2 - 断开连接时Context.User为空

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?如果是这样 - 为什么?:)

Las*_*sen 5

我在SignalR维基中找到了答案.在其关于集线器的部分(https://github.com/SignalR/SignalR/wiki/Hubs)中,它指出:

每当客户端断开连接时,将在实现IDisconnect的所有集线器上调用Disconnect方法.调用此方法时,可以使用Context.ConnectionId访问断开连接的客户端. 注意:此方法从服务器调用,这意味着调用者对象上的状态,连接的任何状态,以及HubContext的用户和Cookie将不会被填充.