Gestion des erreurs WCF

Les erreurs rencontrées par une application WCF appartiennent à l'un de ces trois groupes :

  1. Erreurs de communication

  2. Erreurs de proxy/canal

  3. Erreurs d'application

Les erreurs de communication se produisent lorsqu'un réseau n'est pas disponible, lorsqu'un client utilise une adresse incorrecte ou lorsque l'hôte de service n'écoute pas les messages entrants. Des erreurs de ce type sont retournées au client comme classes dérivées CommunicationException ou CommunicationException.

Les erreurs de proxy/canal sont des erreurs qui se produisent dans le canal ou le proxy lui-même. Les erreurs de ce type incluent : une tentative d'utilisation d'un proxy ou d'un canal qui a été fermé, des contrats qui ne correspondent pas entre le client et le service ou des informations d'identification de client rejetées par le service. Cette catégorie inclut de nombreux types différents d'erreurs, qu'il serait trop long d'énumérer ici. Les erreurs de ce type sont retournées au client en l'état (les objets d'exception ne subissent aucune transformation).

Les erreurs d'application se produisent au cours de l'exécution d'une opération de service. Les erreurs se ce genre sont envoyées au client en tant que FaultException ou FaultException<TDetail>.

Le traitement des erreurs dans WCF est effectué par un ou plusieurs des éléments suivants :

  • Traitement direct de l'exception levée. Uniquement effectué pour les erreurs de communication et de proxy/canal.

  • Utilisation des contrats d'erreur

  • Implémentation de l'interface IErrorHandler

  • Gestion des événements ServiceHost

Contrats d'erreur

Les contrats d'erreur vous permettent de définir les erreurs qui peuvent se produire au cours du fonctionnement du service de façon indépendante de la plate-forme. Par défaut, toutes les exceptions levées à partir d'une opération de service seront retournées au client en tant qu'objet FaultException. L'objet FaultException contiendra très peu d'informations. Vous pouvez contrôler les informations envoyées au client en définissant un contrat d'erreur et en retournant l'erreur en tant que FaultException<TDetail>. Pour plus d’informations, consultez Spécification et gestion des erreurs dans les contrats et les services.

IErrorHandler

L'interface IErrorHandler vous permet de mieux contrôler la façon dont votre application WCF répond aux erreurs. Elle vous donne le contrôle total sur les messages d'erreur retournés au client et vous permet un traitement d'erreur personnalisé tel que la journalisation. Pour plus d’informations sur IErrorHandler et Extension du contrôle à la gestion des erreurs et au rapport d’erreurs

Événements ServiceHost

La classe ServiceHost héberge les services et définit plusieurs événements qui peuvent être nécessaires au traitement des erreurs. Par exemple :

  1. Faulted

  2. UnknownMessageReceived

Pour plus d'informations, consultez ServiceHost