1

我想知道是否可以将 WCF 服务客户端配置为在抛出错误时使用自定义类型而不是 FaultException。自定义类型将从 FaultException 继承,但也有一些关于错误的额外详细信息。

我想使用自定义 FaultException 的原因是我可以存储 SOAP 标头中的 GUID,否则会丢失。

我知道我可以手动捕获并重新抛出服务客户端返回的任何错误,但这很脆弱。我无法保证未来的开发人员也会这样做。

我考虑过对生成的服务客户端类进行子类化并将错误处理放在那里,但是只要目标服务发生变化,就会产生大量工作。

那么,是否可以配置 WCF 服务客户端为故障抛出自定义的 FaultException 类型?

4

1 回答 1

2

您可以创建自己的 IErrorHandler 实现:

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

覆盖 ProvideFault,然后将常规异常(包括普通 FaultException)转换为您自己的基于自定义的FaultException<T>,其中 T 是您自己的类型,您可以定义它以包含自定义属性。

之后,您必须将 IErrorHandler 的实现注册为服务行为,无论是在代码中还是在 web/app 配置中。

于 2013-03-18T19:34:26.377 回答