我想知道在抛出错误时是否可以将WCF服务客户端配置为使用自定义类型而不是FaultException。自定义类型将继承自FaultException,但还有一些有关错误的其他详细信息。
我想使用自定义FaultException的原因是我可以存储SOAP Header中的GUID,否则会丢失。
我知道我可以手动捕获并重新抛出我的服务客户端返回的任何错误,但这很脆弱。我无法保证未来的开发人员也会这样做。
我已经考虑过对生成的服务客户端类进行子类化并将错误处理放在那里,但只要目标服务发生变化,就会产生大量的工作。
那么,是否可以配置WCF服务客户端为Faults抛出自定义FaultException类型?
答案 0 :(得分:2)
您可以创建自己的IErrorHandler实现:
http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.ierrorhandler.aspx
覆盖ProvideFault,然后从常规异常(包括普通的FaultException)转换到您自己的基于自定义的FaultException<T>
,其中T是您自己的类型,您可以定义它以包含自定义属性。
之后,您必须在代码或web / app配置中注册IErrorHandler的实现作为服务行为。