2010-10-15 56 views
1

如果我的服務遇到錯誤,我希望該線程返回一個錯誤並終止,但以後的請求應該仍然正常工作。我該怎麼做呢?如果我有一個未處理的異常,它將被傳回客戶端,但服務停止。C#WCF服務拋出一個錯誤,但繼續

回答

0

什麼樣的未處理的異常?除非異常是終止異常(堆棧溢出等),否則ServiceHost應該繼續響應隨後的請求。

+0

我在拋出FaultException Xodarap 2010-10-15 17:03:16

0

默認情況下,每個請求都會獲得自己的服務實現實例,因此,其中一個請求處理程序中的錯誤不應影響其他請求處理程序。

因此,在WCF的默認行爲中,每個請求都會獲得一個品牌嶄新的服務類新實例,然後處理該請求並終止 - 是否發生異常。可能的問題是例外情況 - 如果您讓它傳遞迴客戶端「未過濾」,那麼通道(客戶端和服務器之間的通信鏈路)可能會「故障」,從而無法使用。

如果您將所有服務例外包裝到FaultExceptionFaultException<T>,那麼您的客戶端和服務器之間的通道應該沒問題。爲了捕獲服務器上的所有可能的錯誤,請檢查在您的服務類中實現IErrorHandler接口。

+0

如果我使用? – Xodarap 2010-10-15 17:13:46

+0

在這種情況下,您只能同時使用一個實例 - 但每個請求仍會獲得自己的服務類副本。 – 2010-10-15 18:31:52