Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以将WCF服务客户端配置为引发自定义FaultException?_Wcf_Error Handling_Wcfserviceclient - Fatal编程技术网

是否可以将WCF服务客户端配置为引发自定义FaultException?

是否可以将WCF服务客户端配置为引发自定义FaultException?,wcf,error-handling,wcfserviceclient,Wcf,Error Handling,Wcfserviceclient,我想知道在抛出错误时是否可以将WCF服务客户端配置为使用自定义类型而不是FaultException。自定义类型将从FaultException继承,但也有一些有关错误的其他详细信息 我希望使用自定义FaultException的原因是,我可以存储SOAP头中的GUID,否则该GUID将丢失 我知道我可以手动捕获并重新抛出我的服务客户端返回的任何错误,但这是脆弱的。我无法保证未来的开发者也会这么做 我曾考虑过对生成的服务客户机类进行子类化,并将错误处理放在其中,但只要目标服务发生更改,就会产生大

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

我希望使用自定义FaultException的原因是,我可以存储SOAP头中的GUID,否则该GUID将丢失

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

我曾考虑过对生成的服务客户机类进行子类化,并将错误处理放在其中,但只要目标服务发生更改,就会产生大量工作


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

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

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


之后,您必须在代码或web/app config中将IErrorHandler的实现注册为服务行为。

您看过s吗?如果我对FaultContracts的理解是正确的,那么它们将在服务端定义。在我的特殊情况下,我无法访问服务端。我正试图获取当前的错误,并用SOAP头数据来修饰它们(主要是因为我无法影响服务抛出的实际错误中的内容)。我错了吗?听起来很有希望。谢谢明天上班的时候我会试一试。