2017-04-18 103 views
0

我有一個應用程序,其中有一個服務器和幾個客戶端通過信號連接。該服務器是一個在Win 2012R2,IIS 8.5中託管的asp.net應用程序。最近我發現了一個問題,當我實際上停止IIS管理器的網站時,客戶端並未觸發斷開連接。它一直髮送keepalive ping到服務器,雖然我已經停止它從IIS。但是,當我回收應用程序池時,連接觸發斷開連接。這是signalr的正常行爲還是應該在服務器被IIS停止時觸發客戶端的斷開連接?IIS停止後,Signalr不觸發斷開連接

SignalR版本 - 2.2.1

+0

如何阻止IIS? –

+0

我不停止IIS。我通過單擊該站點停止IIS管理器的站點並停止。 – janitha000

回答

2

我認爲,停止該網站是不是一個「正常」的方式,讓客戶SignalR不通知,因此他們繼續發送保活消息發送到服務器。這與應用程序池回收相反,它允許進程正常結束(關閉期)。

檢查this article來看看如何實現一種機制來解決這個問題:

當你的SignalR應用的增長,你會發現自己想處理存在管理更復雜的方式。默認情況下,SignalR自己的狀態管理是內存中的。因此,如果您的服務器重新啓動,或者您正在Web場環境中運行,則無法正確維護您的連接

什麼使得良好的狀態管理系統成爲可能?

[...] 刪除殭屍連接。您需要確保您連接到 所有斷開連接事件,以便更新數據庫中的 用戶連接。

相關問題