我们有一个带有WCF层的系统。
WCF服务可以抛出各种FaultExceptions,这些是类型的异常:
FaultException<MyStronglyTypedException>
所有强类型异常都从基本异常继承。
public class MyStronglyTypedException : MyBaseException
我可以捕获FaultException,但是我无法访问FaultException的Detail属性。
我想要抓住的是:
FaultException<MyBaseException>
但这似乎不可能。
有没有办法可以访问FaultException的Detail属性,而不会捕获每个强类型的异常?
答案 0 :(得分:5)
如果您希望能够捕获客户端代码中的强类型FaultException<MyBaseException>
,则必须使用该类型的FaultContract属性修饰您的服务方法:
[ServiceContract]
interface IYourService
{
[OperationContract]
[FaultContract(typeof(MyBaseException))]
ResponseType DoSomethingUsefulHere(RequestType request);
}
如果您没有“声明”那些要捕获强类型FaultContract<T>
异常的特定类型,WCF会将所有服务器端错误转换为通用FaultContract
实例。
答案 1 :(得分:1)
没有经过试验和测试的答案,但此链接可能有用: