2012-07-17 32 views
3

我最近在ASP.NET MVC3應用程序中從0.4.0更新爲SignalR 0.5.2。在SignalR 0.5.2中,當用戶斷開連接時,Context實例上的「用戶」屬性爲null - 這是否由設計決定?SignalR 0.5.2 - Context.User在斷開連接時爲空

從下面的「即時窗口」快照可以看出,當客戶端斷開連接時,我所知道的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?如果是這樣 - 爲什麼? :)

回答

5

我在SignalR wiki中找到了答案。在其關於集線器的部分(https://github.com/SignalR/SignalR/wiki/Hubs)中指出:

每當客戶端斷開連接時,將在所有實現IDisconnect的集線器上調用Disconnect方法。當調用此方法時,可以使用Context.ConnectionId訪問斷開連接的客戶端。 注意:從服務器調用此方法,這意味着調用方對象的狀態,連接的任何狀態以及HubContext的用戶和Cookie將不會被填充。

相關問題