我爲我的wcf應用程序構建了一個全局異常處理。我有一個實現「IErrorHandler」並處理異常的類。我可以使用'IServiceBehavior'屬性註冊ErrorHandler。 (所以我不需要觸及每個函數)WCF全局異常處理
我使用類FaultException來包裝我的異常對象。
Dim sysEx As SystemException = 'Do Convert
Dim fex As New FaultException(Of SystemException)(sysEx, sysEx.Message)
Dim faultMessage As MessageFault = fex.CreateMessageFault
fault = System.ServiceModel.Channels.Message.CreateMessage(version, faultMessage, fex.Action)
現在我可以檢索客戶端的錯誤消息。但不幸的是,我無法檢索原始的異常類型或原始堆棧跟蹤。
是否有一個簡單的選擇來解決問題,而不會在我的服務中爲每個功能添加「FaultContract」?
謝謝
也許我表達自己錯了。我怎樣才能將「UncaughtErrorFault」類「發佈」到客戶端?該類型不會被添加到自動生成的「服務引用」(當然)。所以WCF將故障轉換回正常的System.Exception,而不是在「UncaughtErrorFault」對象中。我該如何解決這個問題? – Mimefilt
要發佈自定義錯誤,請查看此[MSDN文章](http://msdn.microsoft.com/zh-cn/library/ms733841.aspx)。它顯示瞭如何使用指定您的自定義類型的FaultContract屬性標記服務OperationContract方法。但是,您的意志需要標記服務的每個操作方法以使服務引用包含必要的反序列化代碼。這就是我在@SteveWilkes評論中提到的 –