我有2个WCF服务和一个调用第一个WCF服务方法的客户端,该方法因此调用第二个WCF服务的方法。第二个WCF服务的方法引发了一般故障异常,我需要通过第一个服务将此异常“交付”给我的客户端。第一个WCF服务通常在异常消息体中使用一些Action
“http:// SomeNamespace”获取该泛型异常。当第一个服务向客户端重新抛出此异常时,客户端变得简单FaultException
而不是FaultException
1 . I think the problem is in
Action`,其中包含客户端无法接受的命名空间,这就是为什么客户端无法获得通用异常。在第一个WCF服务中有一个WCF异常屏蔽。以下是配置代码和处理程序代码。
请帮助我,并建议更改客户能够正常获取的异常操作的最佳方法。
这是配置:
<exceptionHandling>
<exceptionPolicies>
<add name="WCF Exception Shielding">
<exceptionTypes>
<add type="System.ServiceModel.FaultException`1[[Sample.SomeFaultContract, Sample, PublicKeyToken=769e6b46280078d4]], System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
postHandlingAction="ThrowNewException" name="SomeFaultContract">
<exceptionHandlers>
<add faultContractType="Sample.SomeFaultContract, Sample, PublicKeyToken=769e6b46280078d4"
type="Helper.ServiceFaultContractHandler, Logger, PublicKeyToken=769e6b46280078d4"
name="Fault Contract Exception Handler" />
</exceptionHandlers>
</add>
</exceptionTypes>
</add>
</exceptionHandling>
处理程序部分是:
public class ServiceFaultContractHandler : IExceptionHandler
{
public ServiceFaultContractHandler(NameValueCollection ignore) { }
public Exception HandleException(Exception exception, Guid correlationID)
{
}
}
提前谢谢。
亚兰
答案 0 :(得分:0)
为了获取异常的详细信息,您应该在服务行为中将includeExceptionDetailInFaults属性设置为true。 以下是一个示例:
<behaviors>
<serviceBehaviors>
<behavior name="WCFServicesName">
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>