WCF捕获类型T或基本类型的故障异常

时间:2010-02-08 10:23:03

标签: wcf exception-handling

我们有一个带有WCF层的系统。

WCF服务可以抛出各种FaultExceptions,这些是类型的异常:

FaultException<MyStronglyTypedException>

所有强类型异常都从基本异常继承。

public class MyStronglyTypedException : MyBaseException

我可以捕获FaultException,但是我无法访问FaultException的Detail属性。

我想要抓住的是:

FaultException<MyBaseException>

但这似乎不可能。

有没有办法可以访问FaultException的Detail属性,而不会捕获每个强类型的异常?

2 个答案:

答案 0 :(得分:5)

如果您希望能够捕获客户端代码中的强类型FaultException<MyBaseException>,则必须使用该类型的FaultContract属性修饰您的服务方法:

[ServiceContract]
interface IYourService
{
   [OperationContract]
   [FaultContract(typeof(MyBaseException))]
   ResponseType DoSomethingUsefulHere(RequestType request);
}

如果您没有“声明”那些要捕获强类型FaultContract<T>异常的特定类型,WCF会将所有服务器端错误转换为通用FaultContract实例。

答案 1 :(得分:1)

没有经过试验和测试的答案,但此链接可能有用:

Exception Handling in WCF using Fault Contract