Partager via


Gestion des erreurs WCF

Les erreurs rencontrées par une application WCF appartiennent à l’un des trois groupes suivants :

  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, qu’un client utilise une adresse incorrecte ou que l’hôte de service n’écoute pas les messages entrants. Les erreurs de ce type sont retournées au client en tant que classes dérivées de CommunicationException ou de 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 : la tentative d’utilisation d’un proxy ou d’un canal qui a été fermé, une incompatibilité de contrat existe entre le client et le service, ou les informations d’identification du client sont rejetées par le service. Il existe de nombreux types d'erreurs différentes dans cette catégorie, trop nombreux pour les énumérer ici. Les erreurs de ce type sont retournées au client as-is (aucune transformation n’est effectuée sur les objets d’exception).

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

La gestion des erreurs dans WCF est effectuée par un ou plusieurs des éléments suivants :

  • Traitement direct de l'exception levée. Cette opération est effectuée uniquement 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 de défaillance

Les contrats d’erreur vous permettent de définir les erreurs qui peuvent se produire pendant l’opération de service d’une manière indépendante de la plateforme. 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 contient 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. Il vous donne un contrôle total sur le message d’erreur retourné au client et vous permet d’effectuer 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 ServiceHost classe héberge les services et définit plusieurs événements qui peuvent être nécessaires pour gérer les erreurs. Par exemple:

  1. Faulted

  2. UnknownMessageReceived

Pour plus d’informations, consultez ServiceHost