WCF-FehlerbehandlungWCF Error Handling

Die bei einer WCF-Anwendung aufgetretenen Fehler gehören zu einer von drei Gruppen:The errors encountered by a WCF application belong to one of three groups:

  1. KommunikationsfehlerCommunication Errors

  2. Proxy-/ChannelfehlerProxy/Channel Errors

  3. AnwendungsfehlerApplication Errors

Kommunikationsfehler treten auf, wenn ein Netzwerk nicht verfügbar ist, ein Client eine falsche Adresse verwendet oder der Diensthost keine eingehende Nachrichten überwacht.Communication errors occur when a network is unavailable, a client uses an incorrect address, or the service host is not listening for incoming messages. An den Client werden Fehler dieses Typs als CommunicationException-Klasse oder abgeleitete CommunicationException-Klasse zurückgegeben.Errors of this type are returned to the client as CommunicationException or CommunicationException-derived classes.

Proxy-/Channelfehler sind Fehler, die innerhalb des Channels oder des Proxys selbst auftreten.Proxy/Channel errors are errors that occur within the channel or proxy itself. 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.Errors of this type include: attempting to use a proxy or channel that has been closed, a contract mismatch exists between the client and service, or the client’s credentials are rejected by the service. Es gibt viele andere Fehlertypen in dieser Kategorie, die hier nicht alle aufgeführt werden können.There are many different types of errors in this category, too many to list here. An den Client werden Fehler dieses Typs unverändert zurückgegeben (es wird keine Transformation für die Ausnahmeobjekte ausgeführt).Errors of this type are returned to the client as-is (no transformation is performed on the exception objects).

Anwendungsfehler treten während der Ausführung eines Dienstvorgangs auf.Application errors occur during the execution of a service operation. Fehler dieser Art werden an den Client als FaultException oder FaultException<TDetail> gesendet.Errors of this kind are sent to the client as FaultException or FaultException<TDetail>.

Die Fehlerbehandlung in WCF wird durch einen oder mehrere der folgenden Schritte ausgeführt:Error handling in WCF is performed by one or more of the following:

  • Direkte Behandlung der ausgelösten Ausnahme.Directly handling the exception thrown. Dies erfolgt nur für Kommunikations- und Proxy-/Channelfehler.This is only done for communication and proxy/channel errors.

  • Verwenden von FehlerverträgenUsing fault contracts

  • Implementieren der IErrorHandler-SchnittstelleImplementing the IErrorHandler interface

  • Behandlung von ServiceHost-EreignissenHandling ServiceHost events

FehlerverträgeFault Contracts

Mithilfe von Fehlerverträgen können Sie die Fehler, die während eines Dienstvorgangs auftreten können, auf plattformunabhängige Weise definieren.Fault contracts allow you to define the errors that can occur during service operation in a platform independent way. Standardmäßig werden alle innerhalb eines Dienstvorgangs ausgelösten Ausnahmen an den Client als FaultException-Objekt zurückgegeben.By default all exceptions thrown from within a service operation will be returned to the client as a FaultException object. Das FaultException-Objekt enthält sehr wenig Informationen.The FaultException object will contain very little information. Sie können die an den Client gesendeten Informationen durch Definieren eines Fehlervertrags und Zurückgeben des Fehlers als FaultException<TDetail> steuern.You can control the information sent to the client by defining a fault contract and returning the error as a FaultException<TDetail>. Weitere Informationen finden Sie unter angeben und Behandeln von Fehlern in Verträgen und Diensten.For more information, see Specifying and Handling Faults in Contracts and Services.

IErrorHandlerIErrorHandler

Die IErrorHandler-Schnittstelle ermöglicht Ihnen mehr Kontrolle darüber, wie die WCF-Anwendung auf Fehler reagiert.The IErrorHandler interface allows you more control over how your WCF application responds to errors. 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.It gives you full control over the fault message that is returned to the client and allows you to perform custom error processing such as logging. Weitere Informationen zu IErrorHandler und erweitern Steuerelement über Fehlerbehandlung und BerichterstellungFor more information about IErrorHandler and Extending Control Over Error Handling and Reporting

ServiceHost-EreignisseServiceHost Events

Die ServiceHost-Klasse hostet Dienste und definiert mehrere Ereignisse, die möglicherweise zur Fehlerbehandlung benötigt werden.The ServiceHost class hosts services and defines several events that may be needed for handling errors. Zum Beispiel:For example:

  1. `System.ServiceModel.ServiceHost.Faulted`
  2. `System.ServiceModel.ServiceHost.UnknownMessageReceived`

Weitere Informationen finden Sie unter ServiceHostFor more information, see ServiceHost