只是試圖讓我的頭在WCF出現問題時會發生什麼。我有PerSession的InstanceContextMode宣佈我的服務合同的執行...WCF回調失敗 - 會話會發生什麼?
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Multiple)]
的通話發生如下:
我的客戶端調用服務器並調用GetServerUTC()返回服務器的當前UTC時間。這是一種單向呼叫,當服務器準備就緒時(在本例中簡單地返回當前時間,服務器將返回客戶端)
服務器回撥給客戶端並用於回調實現中的測試目的在客戶端上,我拋出一個異常。
這在客戶端未處理(出於測試目的)並且客戶端崩潰並關閉。
在我處理的ICommunicationObject發生故障的事件處理程序服務器...
obj.Faulted + =新的EventHandler(EventService_Faulted);
問題...
這會殺死對服務器上的當前連接的會話。
我認爲我可以自由地做我想要的方法,例如日誌記錄或其他內容,但是我應該做什麼特定的事情來終止會話,或者WCF會處理這個事情嗎?
從最佳實踐角度來看,當回調出現故障時該怎麼辦?這是否意味着「你的客戶發生了什麼事情」,這是否結束呢,還是有我在這裏失蹤的東西?
此外,是否還有其他任何我應該處理的故障處理程序。
我在WCF上做了大量的閱讀,似乎有點模糊當出現問題時該怎麼辦。目前,我正在我的客戶端上實現一臺狀態機,它將管理連接,並根據服務器是否存在連接來確定用戶操作是否可以發生 - 或者這種矯枉過正。
任何提示將真的讚賞;)
這是非常糟糕的做法,因爲它可能會非常快地耗盡您的服務器會話限制。您應該在客戶端中止通道。 – Alex 2010-03-31 15:20:04