我为我的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评论中提到的 –