Control de errores de WCF

Los errores detectados por una aplicación WCF pertenecen a uno de los tres grupos:

  1. Errores de comunicación

  2. Errores de proxy o canal

  3. Errores de aplicación

Los errores de comunicación se producen cuando una red no está disponible, un cliente usa una dirección incorrecta o el host de servicio no escucha los mensajes entrantes. Los errores de este tipo se devuelven al cliente como clase CommunicationException o clase derivada de la clase CommunicationException.

Los errores de proxy o canal son errores que se producen en el propio canal o proxy. Los errores de este tipo incluyen: el intento por usar un proxy o canal cerrados, la existencia de una discrepancia entre el cliente y el servicio, o el rechazo de las credenciales del cliente por parte del servicio. Existen muchos tipos de errores distintos en esta categoría, demasiados para enumerarlos aquí. Los errores de este tipo se devuelven al cliente tal cual (no se realiza ninguna transformación en los objetos de excepción).

Los errores de aplicación se producen durante la ejecución de una operación de servicio. Los errores de este tipo se envían al cliente como clase FaultException o clase FaultException<TDetail>.

El control de errores en WCF se realiza mediante una o varias de las siguientes acciones:

  • Controlar directamente la excepción producida, que solo se lleva a cabo para errores de comunicación y de proxy o canal.

  • Usar contratos de errores

  • Implementar la interfaz IErrorHandler

  • Controlar eventos ServiceHost

Contrato de error

Los contratos de error le permiten definir los errores que se pueden producir durante la operación de servicio en una plataforma de manera independiente. De forma predeterminada, todas las excepciones producidas desde una operación de servicio se devolverán al cliente como objeto FaultException. El objeto FaultException contendrá muy poca información. Puede controlar la información enviada al cliente mediante la definición de un contrato de error y la devolución del error como clase FaultException<TDetail>. Para obtener más información, consulte Especificación y administración de errores en contratos y servicios.

IErrorHandler

La interfaz IErrorHandler le permite controlar más la respuesta de la aplicación WCF a los errores. Proporciona control total sobre el mensaje de error devuelto al cliente y permite realizar el procesamiento de errores personalizado como el registro. Para obtener más información, consulte IErrorHandler y Extensión de control a control de errores y creación de informes

Eventos ServiceHost

La clase ServiceHost hospeda servicios y define varios eventos que quizá sean necesarios para el control de errores. Por ejemplo:

  1. Faulted

  2. UnknownMessageReceived

Para obtener más información, vea ServiceHost.