2013-03-17 66 views
1

我想知道是否有可能配置WCF服務客戶端使用自定義類型而不是FaultException拋出錯誤時。自定義類型將繼承FaultException,但也有關於錯誤的其他詳細信息。是否可以配置WCF服務客戶端來引發自定義FaultException?

我想使用自定義FaultException的原因是我可以從SOAP Header存儲一個GUID,否則這個GUID會丟失。

我知道我可以手動捕獲並重新拋出服務客戶端返回的任何錯誤,但這很脆弱。我無法保證未來的開發者也會這樣做。

我想過生成的服務客戶端類的子類,並將錯誤處理放在那裏,但是當目標服務發生變化時會產生很多工作。

那麼,是否可以配置WCF服務客戶端爲Faults引發自定義的FaultException類型?

+0

你看過[Fault Contract](http://msdn.microsoft.com/en-us/library/ms752208.aspx)嗎? – Tim 2013-03-18 05:48:18

+0

如果我對FaultContracts的理解是正確的,那麼它們就是在服務方面定義的。在我的特殊情況下,我無法訪問服務端。我試圖採用當前的Faults並用SOAP頭數據修飾它們(主要是因爲我無法影響服務引發的實際故障中的內容)。我錯了嗎? – MetaFight 2013-03-18 10:10:29

回答

2

您可以創建自己的IErrorHandler實現:

http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.ierrorhandler.aspx

覆蓋ProvideFault,然後做從普通的異常(包括普通的FaultException)轉換爲基於FaultException<T>自己的自定義,其中T是自己的類型,你可以定義爲包含自定義屬性。

之後,您必須在代碼或web/app配置中將您的IErrorHandler實現註冊爲服務行爲。

+0

聽起來很有希望。謝謝。我明天在工作中給它一個鏡頭。 – MetaFight 2013-03-18 23:22:32

相關問題