Teilen über


WCF-Fehlerbehandlung

Die Fehler, die in einer WCF-Anwendung auftreten, gehören zu einer von drei Gruppen.

  1. Kommunikationsfehler

  2. Proxy-/Kanalfehler

  3. Anwendungsfehler

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

Proxy-/Kanalfehler sind Fehler, die innerhalb des Kanals oder Proxys selbst auftreten. Fehler dieses Typs sind: Der Versuch, einen Proxy oder Kanal zu verwenden, der geschlossen wurde, ein Vertragskonflikt zwischen dem Client und dem Dienst besteht, oder die Anmeldeinformationen des Clients werden vom Dienst abgelehnt. Es gibt viele verschiedene Arten von Fehlern in dieser Kategorie, zu viele, um hier auflisten zu können. Fehler dieses Typs werden an den Client as-is zurückgegeben (für die Ausnahmeobjekte wird keine Transformation ausgeführt).

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

Die Fehlerbehandlung in WCF wird von einer oder mehreren der folgenden Aktionen ausgeführt:

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

  • Verwenden von Fehlerverträgen

  • Implementieren der IErrorHandler Schnittstelle

  • Behandlung von ServiceHost-Ereignissen

Fehlerverträge

Fehlerverträge ermöglichen es Ihnen, die Fehler zu definieren, die während des Dienstvorgangs auf eine plattformunabhängige Weise auftreten können. Standardmäßig werden alle Ausnahmen, die von einem Dienstvorgang ausgelöst werden, als FaultException Objekt an den Client zurückgegeben. Das FaultException Objekt enthält nur sehr wenige Informationen. Sie können die an den Client gesendeten Informationen steuern, indem Sie einen Fault Contract definieren und den Fehler in einem FaultException<TDetail>zurückgeben. Weitere Informationen finden Sie unter Angeben und Behandeln von Fehlern in Verträgen und Diensten.

IErrorHandler

Über die IErrorHandler Schnittstelle können Sie besser steuern, wie Ihre WCF-Anwendung auf Fehler reagiert. Es bietet Ihnen die vollständige Kontrolle über die Fehlermeldung, die an den Client zurückgegeben wird, und ermöglicht es Ihnen, benutzerdefinierte Fehlerverarbeitung wie z. B. protokollierung durchzuführen. 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 für die Behandlung von Fehlern erforderlich sein können. Beispiel:

  1. Faulted

  2. UnknownMessageReceived

Weitere Informationen finden Sie unter ServiceHost