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

时间:2012-07-17 19:51:46

标签: 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

简化,我的SignalR Hub实现如下:

public class MyHub : Hub, IDisconnect, IConnected
{
    // some other code

    public Task Disconnect()
    {
        var user = Context.User; // <-- This is null
        // more code
    }
}

总结一下 - 我忘了这里的东西,还是设计Context.User是null?如果是这样 - 为什么? :)

1 个答案:

答案 0 :(得分:5)

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

  

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