2010-05-26 25 views
29

有關此主題的文檔很差。我在Windows服務中使用NetTcpBinding使用WCF服務。問題是會話在一段時間內處於非活動狀態時會被丟棄。我需要的是始終活着的會話。 WCF是可靠的會話嗎?或者我可以玩超時設置?WCF可靠會話的目的是什麼?

回答

39

不,可靠的會話會像其他任何會話一樣超時。主要問題是:你爲什麼要讓你的會議「無盡」?如果你真的需要這個,你需要在會​​話中加快超時。

可靠會話的要點是調用者會知道任何丟失的消息。與流行的觀點相反,可靠的會話不能保證傳遞消息 - 但是如果消息不能傳遞,至少調用者會知道它。

檢查出一些這些資源,爲更多的背景信息:

+0

感謝澄清什麼是可靠的會話。 關於「無盡的」會話:我有一個事件驅動的系統。當消息到達時,客戶端應該調用一些WCF服務。消息可以每秒發生,重要的是要跟上每一個。有時候收到郵件的時間間隔可能會比一秒鐘大得多,比如說一兩天。所以我需要一些保持活性的機制。 – 2010-05-26 09:16:13

+1

@bsnote:爲什麼?如果兩條消息之間的時間間隔爲兩天,那麼在我看來,這個會話始終處於活動狀態並沒有意義。 – 2010-05-26 11:24:02

+0

每次收到消息時創建一個通道的成本太高,以防消息每秒收到一次。雖然我同意當時間間隔爲一天的時候沒有任何意義。 – 2010-05-26 15:49:01

6
如果你不使用通道

,它將關閉他過了一會兒。 您可以更改綁定的默認超時時間(即10分鐘)。

NetTcpBinding binding = new NetTcpBinding(); 
binding.ReceiveTimeout = TimeSpan.MaxValue; 
binding.ReliableSession.InactivityTimeout = TimeSpan.MaxValue; 

閱讀更多MSDN