2010-02-08 51 views
6

我们有一个带有WCF层的系统。WCF捕获类型为T或基类型的故障异常

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

FaultException<MyStronglyTypedException> 

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

public class MyStronglyTypedException : MyBaseException 

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

我想做些什么美中不足的是:

FaultException<MyBaseException> 

但是这似乎并不可能。

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

回答

5

如果你希望能够赶上你的客户端代码的强类型FaultException<MyBaseException>,你必须与该类型FaultContract属性装饰你的服务方法:

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

如果你不“宣布”要坚决对付那些特定类型的输入FaultContract<T>例外,WCF会将所有服务器端故障转换为通用FaultContract实例。

1

不要对你有一个经得起考验的答案,但这种联系可能是有用的:

Exception Handling in WCF using Fault Contract

+0

谢谢,但是这是目前我们在做什么,在那里他有: 赶上(的FaultException EE) 我们有超过100种不同的例外情况,目前我已经写了一个程序来生成这个码。 – 2010-02-08 13:54:37