WCF-Fehlerbehandlung

Die bei einer WCF-Anwendung aufgetretenen Fehler gehören zu einer von drei Gruppen:

  1. Kommunikationsfehler

  2. Proxy-/Channelfehler

  3. Anwendungsfehler

Kommunikationsfehler treten auf, wenn ein Netzwerk nicht verfügbar ist, ein Client eine falsche Adresse verwendet oder der Diensthost keine eingehende Nachrichten überwacht. An den Client werden Fehler dieses Typs als CommunicationException-Klasse oder abgeleitete CommunicationException-Klasse zurückgegeben.

Proxy-/Channelfehler sind Fehler, die innerhalb des Channels oder des Proxys selbst auftreten. Fehler dieses Typs sind unter anderem: Versuche, einen Proxy oder Channel zu verwenden, der geschlossen wurde, ein Vertragskonflikt zwischen Client und Dienst oder die Ablehnung der Anmeldeinformationen des Clients durch den Dienst. Es gibt viele andere Fehlertypen in dieser Kategorie, die hier nicht alle aufgeführt werden können. An den Client werden Fehler dieses Typs unverändert zurückgegeben (es wird keine Transformation für die Ausnahmeobjekte ausgeführt).

Anwendungsfehler treten während der Ausführung eines Dienstvorgangs auf. Fehler dieser Art werden an den Client als FaultException oder FaultException<TDetail> gesendet.

Die Fehlerbehandlung in WCF wird durch einen oder mehrere der folgenden Schritte ausgeführt:

  • Direkte Behandlung der ausgelösten Ausnahme. Dies erfolgt nur für Kommunikations- und Proxy-/Channelfehler.

  • Verwenden von Fehlerverträgen

  • Implementieren der IErrorHandler-Schnittstelle

  • Behandlung von ServiceHost-Ereignissen

Fehlerverträge

Mithilfe von Fehlerverträgen können Sie die Fehler, die während eines Dienstvorgangs auftreten können, auf plattformunabhängige Weise definieren. Standardmäßig werden alle innerhalb eines Dienstvorgangs ausgelösten Ausnahmen an den Client als FaultException-Objekt zurückgegeben. Das FaultException-Objekt enthält sehr wenig Informationen. Sie können die an den Client gesendeten Informationen durch Definieren eines Fehlervertrags und Zurückgeben des Fehlers als FaultException<TDetail> steuern. Weitere Informationen finden Sie unter Angeben und Behandeln von Fehlern in Verträgen und Diensten.

IErrorHandler

Die IErrorHandler-Schnittstelle ermöglicht Ihnen mehr Kontrolle darüber, wie die WCF-Anwendung auf Fehler reagiert. Sie gibt Ihnen volle Kontrolle über die Fehlermeldung, die an den Client zurückgegeben wird, und ermöglicht Ihnen, die benutzerdefinierte Fehlerverarbeitung auszuführen, z. B. die Protokollierung. Weitere Informationen finden Sie unter IErrorHandler und Erweitern der Kontrolle über Fehlerbehandlung und -meldung.

ServiceHost-Ereignisse

Die ServiceHost-Klasse hostet Dienste und definiert mehrere Ereignisse, die möglicherweise zur Fehlerbehandlung benötigt werden. Zum Beispiel:

  1. Faulted

  2. UnknownMessageReceived

Weitere Informationen finden Sie unter ServiceHost.