Skip to content

Cómo enviar excepciones personalizadas desde WCF al cliente

by en 3 mayo, 2013

Comenzamos aclarando que en WCF, no debemos arrojar excepciones nativas de .Net ya que son contrarias a la naturaleza interoperable de los WCF, después de todo tu cliente puede ser Java o PHP que no tiene el concepto de estas  excepciones .NET

En su lugar, necesitamos arrojar hacia el cliente excepciones por defecto “FaultExceptions” la que funcionan como estándar para WCF.. pero vamos paso a paso.

Creamos el método que potencialmente va a arrojar nuestra excepción en el servidor:


public bool Read()
{
 if (IsUserValid() == false)
 {
 throw new FaultException<InvalidUserFault>("User invalid");
 }
}

En el lado del cliente, “trycatcheamos” la llamada al método de nuestro WCF, hay que tener en cuenta que el “Catch” ya no recibe una excepción genérica, sino la Exepción que nosotros definimos.

<code>try
{
   _client.Read();
}
catch (FaultException<InvalidUserFault> e)
{
    MessageBox.Show(e.Message);
    return;
}</code>

A continuación debemos declarar nuestro InvalidUserFault  como “data contract” y definir que mienbros deben transmitirse, puede ser: Un mensaje de error personalizado, el call stack, la innerException, etc.

[DataContract]
 public class BusinessFault
 {
   [DataMember]
   string Message {get; set;}
   [DataMember]
   string InnerException{get; set;}
}

Por último, para saber desde el lado cliente que nuestro servicio puede arrojar una excepción personalizada, debemos expresarlo en el método del servicio

[FaultContract(typeof(InvalidUserFault)]
[OperationContract]
public bool Read();

fuente original: http://stackoverflow.com/questions/1369882/wcf-web-service-custom-exception-error-to-client

From → .NET Framework, C#, WCF

Dejar un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: