2011-05-24 12 views
7

Tengo problemas para devolver la excepción de error personalizado del servicio wcf. La aplicación cliente que está hablando con el servicio wcf obtiene un error de discrepancia contractual. Aquí es mi culpa contrato definido en el servicio:Devolver la excepción de error personalizado WCF

public partial class Fault 
{ 
    string codeField; 
    string messageField; 
    string detailsField; 
} 

En caso de error en el servicio que estoy creando una excepción de error personalizado de la siguiente manera:

public void ProvideFault(Exception exception, MessageVersion version, ref Message  refMessage) 
{ 
     mynamespace.Fault customFault = new mynamespace.Fault() 
     { 
      code = "Service Error", 
      message = "Error Message", 
      details = "Error Message" 
     }; 

     FaultException<mynamespace.Fault> faultexception = new FaultException<mynamespace.Fault>(customFault); 

     MessageFault messageFault = faultexception.CreateMessageFault(); 

     refMessage = Message.CreateMessage(version, messageFault, faultNamespace); 
} 

Este código hace que un error de coincidencia contrato de cliente. ¿Alguien puede por favor ayudarme a encontrar lo que está mal?

+0

problema puede estar en otro lugar, puede poner un punto de quiebre en ProvideFault y ver –

Respuesta

3

especificar qué tipo de falla tiene que devolver (por ejemplo, crear una clase UserMismatchFault), y luego tirar de este modo:

throw new FaultException<UserMismatchFault>(myFault); 
2

¿Qué es faultNamespace? El tercer parámetro de CreateMessage debe ser acción (faultException.Action). Además, no olvide que su clase Fault debe ser válida DataContract - en el caso de la serialización predeterminada, los miembros deben ser public.

Cuestiones relacionadas