2012-02-17 99 views
5

在連接時,我將clientID映射到其他客戶端,並在靜態變量中構建訂閱信息。這工作正常,直到應用程序池回收或我重新編譯,然後我失去了我的映射。SignalR:應用程序池回收後如何重新獲取客戶端信息

客戶端連接在應用程序池回收後仍然存在,但我在OnConnectAsync()或OnReceivedAsync()方法中看不到任何內容。

我在Firebug中看到客戶每4分鐘提交一個新的POST。是否有一些SignalR事件可以重寫以捕獲傳入的POST併爲當前的持久連接重建我的客戶端映射?

謝謝。

回答

4

確保您使用SignalR 0.4。您可以處理OnReconnectedAsync。

https://github.com/SignalR/SignalR/wiki/PersistentConnection

免責聲明:如果您在存儲靜態變量您的應用程序狀態將永遠無法進行擴展,在一個農場(但也許你不關心)。

+0

Redis或Mem緩存的時間? ;-) – 2013-02-06 21:53:55

+0

這與1.1.2仍然相關嗎? SignalR無法在應用程序池回收中遇到問題。 – Anders 2013-06-25 09:29:19

+0

LongPolling不會在應用程序池回收中提升服務器端重新連接,但signalr重新連接就好。 – davidfowl 2013-06-25 16:30:36