2010-02-08 11 views
6

Tenemos un sistema con una capa WCF.WCF catching Fault Exceptions de tipo T o Base type

Los servicios WCF pueden lanzar varios FaultExceptions, éstas son excepciones de tipo:

FaultException<MyStronglyTypedException> 

Todos los tipos fuertemente excepciones heredar de una excepción de base.

public class MyStronglyTypedException : MyBaseException 

Puedo capturar FaultException, pero no tengo acceso a la propiedad Detail de FaultException.

Lo que me gustaría es para atrapar:

FaultException<MyBaseException> 

Pero esto no parece ser posible.

¿Hay alguna manera de que pueda obtener acceso a la propiedad Detail de FaultException, sin capturar todas las excepciones individuales fuertemente tipadas?

Respuesta

5

Si usted quiere ser capaz de coger el establecimiento inflexible FaultException<MyBaseException> en su código de cliente, debe adornar su método de servicio con el atributo FaultContract para ese tipo:

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

Si no "declarar" esos tipos específicos que desea capturar de tipo firme FaultContract<T> excepciones para, WCF convierta todas las fallas del lado del servidor en instancias de uso general FaultContract.

1

No tienen una respuesta de probada eficacia para usted, pero este enlace puede ser de utilidad:

Exception Handling in WCF using Fault Contract

+0

Gracias, pero esto es lo que estamos haciendo actualmente, donde tiene: captura (FaultException ee) Tenemos más de 100 diferentes excepciones, Actualmente han escrito un programa para generar este código. –