2013-03-03 38 views
0

所以我這樣做:Signalr onConnected

public string getClientConnectionId() 
{ 
    return Context.ConnectionId; 
} 

我在服務器端Default.aspx頁面,我這樣做是在頁面加載

string i = new ChatHub().getClientConnectionId(); 

,但我得到的對象引用不設置到一個對象錯誤的實例,我需要得到我的客戶端連接ID,所以我可以將它存儲在我的數據庫中的數據庫中客戶端有兩個ID的主鍵ID是自動生成的和ChatId誰應該是連接ID所以我該如何修復我的問題 ?

+0

我認爲這是一個好主意,發佈堆棧跟蹤 – 2013-03-03 19:36:58

+0

它看起來像'Context'爲空,是什麼問題? – gdoron 2013-03-03 19:37:30

+0

問題是爲什麼我的上下文爲空 – Sora 2013-03-03 19:38:32

回答

2

如果你使用的是WebForms,並且你有一個帶有代碼的aspx頁面,你不能做新的MyPage()。Page_Load(),它會以某種方式炸燬,因爲你是不是負責用於創建頁面。 MVC控制器和SignalR集線器和持續連接也是如此。

當您啓動連接客戶端時,它將通過完整管道運行以獲取連接標識。這個連接ID可以在客戶端使用(在這種情況下使用$ .connection.hub.id),如果你想以某種方式將它傳回給你的頁面,那麼你需要向傳入的頁面發出請求來自客戶端的連接ID。

當客戶端連接時,您也可以在集線器本身進行映射,但這需要更多的應用程序知識來了解它是否可能。

+0

此連接ID在客戶端可用(在本例中使用$ .connection.hub.id)我只是這樣做:var chat = $ .connection.chatHub; $ .connection.hub.start(); alert(chat.id);我得到了'undefined'消息 – Sora 2013-03-03 19:48:04

+0

直到連接啓動後纔得到ID: var chat = $ .connection.chatHub; $ .connection.hub.start()。done(function(){alert($。connection.hub.id);}); – davidfowl 2013-03-03 19:52:44

+0

該ID是在連接上,**不** **集線器實例因此($ .connection.hub.id) – davidfowl 2013-03-03 19:54:29

相關問題