Gestione errori WCFWCF Error Handling

Gli errori rilevati da un'applicazione WCF appartengono a uno dei seguenti tre gruppi:The errors encountered by a WCF application belong to one of three groups:

  1. errori di comunicazioneCommunication Errors

  2. errori di proxy/canaleProxy/Channel Errors

  3. errori di applicazioneApplication Errors

Gli errori di comunicazione si verificano quando una rete non è disponibile, un client utilizza un indirizzo errato o l'host del servizio non è in ascolto dei messaggi in arrivo.Communication errors occur when a network is unavailable, a client uses an incorrect address, or the service host is not listening for incoming messages. Errori di questo tipo vengono restituiti al client come CommunicationException o CommunicationException (classi derivate).Errors of this type are returned to the client as CommunicationException or CommunicationException-derived classes.

Gli errori di proxy/canale si verificano all'interno del canale o nel proxy stesso.Proxy/Channel errors are errors that occur within the channel or proxy itself. Gli errori di questo tipo includono il tentativo di utilizzare un proxy o un canale chiuso, un contratto non corrispondente tra il client e il servizio o il rifiuto delle credenziali del client da parte del servizio.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. In questa categoria sono presenti molti tipi di errori diversi, troppo numerosi per essere elencati in questo documento.There are many different types of errors in this category, too many to list here. Gli errori di questo tipo vengono restituiti al client così come sono, non viene eseguita alcuna trasformazione sugli oggetti dell'eccezione.Errors of this type are returned to the client as-is (no transformation is performed on the exception objects).

Gli errori di applicazione si verificano durante l'esecuzione di un'operazione del servizio.Application errors occur during the execution of a service operation. Errori di questo tipo vengono inviati al client come FaultException o FaultException<TDetail>.Errors of this kind are sent to the client as FaultException or FaultException<TDetail>.

La gestione degli errori in WCF viene eseguita secondo uno o più dei modi indicati di seguito.Error handling in WCF is performed by one or more of the following:

  • Gestione diretta dell'eccezione generata.Directly handling the exception thrown. Viene eseguita solo per gli errori di comunicazione di proxy/canale.This is only done for communication and proxy/channel errors.

  • Utilizzo dei contratti di errore.Using fault contracts

  • Implementazione dell'interfaccia IErrorHandlerImplementing the IErrorHandler interface

  • Gestione degli eventi ServiceHostHandling ServiceHost events

Contratti di erroreFault Contracts

I contratti di errore consentono all'utente di definire gli errori che si possono verificare durante l'operazione del servizio in una modalità indipendente dalla piattaforma.Fault contracts allow you to define the errors that can occur during service operation in a platform independent way. Per impostazione predefinita tutte le eccezioni generate da un'operazione del servizio saranno restituite al client come oggetto FaultException.By default all exceptions thrown from within a service operation will be returned to the client as a FaultException object. L'oggetto FaultException conterrà un numero molto contenuto di informazioni.The FaultException object will contain very little information. È possibile controllare le informazioni inviate al client definendo un contratto di errori e restituendo l'errore come FaultException<TDetail>.You can control the information sent to the client by defining a fault contract and returning the error as a FaultException<TDetail>. Per ulteriori informazioni, vedere specifica e gestione degli errori in contratti e servizi.For more information, see Specifying and Handling Faults in Contracts and Services.

IErrorHandlerIErrorHandler

L'interfaccia IErrorHandler consente un maggiore controllo delle risposte dell'applicazione WCF agli errori.The IErrorHandler interface allows you more control over how your WCF application responds to errors. Fornisce controllo completo sul messaggio di errore restituito al client e consente di eseguire elaborazioni personalizzate dell'errore, ad esempio la registrazione.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. Per ulteriori informazioni IErrorHandler e estensione di controllo sulla gestione degli errori e creazione di reportFor more information about IErrorHandler and Extending Control Over Error Handling and Reporting

Eventi ServiceHostServiceHost Events

La classe ServiceHost ospita i servizi e definisce diversi eventi che possono essere necessari per la gestione degli errori.The ServiceHost class hosts services and defines several events that may be needed for handling errors. Ad esempio:For example:

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

Per altre informazioni, vedere ServiceHost.For more information, see ServiceHost