Gestion des erreurs WCF
Les erreurs rencontrées par une application WCF appartiennent à l'un de ces trois groupes :
Erreurs de communication
Erreurs de proxy/canal
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 :
Pour plus d'informations, consultez ServiceHost