Gestione degli errori WCF

Gli errori rilevati da un'applicazione WCF appartengono a uno dei seguenti tre gruppi:

  1. errori di comunicazione

  2. errori di proxy/canale

  3. Errori delle applicazioni

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. Errori di questo tipo vengono restituiti al client come CommunicationException o CommunicationException (classi derivate).

Gli errori di proxy/canale si verificano all'interno del canale o nel proxy stesso. 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. In questa categoria sono presenti molti tipi di errori diversi, troppo numerosi per essere elencati in questo documento. Gli errori di questo tipo vengono restituiti al client così come sono, non viene eseguita alcuna trasformazione sugli oggetti dell'eccezione.

Gli errori di applicazione si verificano durante l'esecuzione di un'operazione del servizio. Errori di questo tipo vengono inviati al client come FaultException o FaultException<TDetail>.

La gestione degli errori in WCF viene eseguita secondo uno o più dei modi indicati di seguito.

  • Gestione diretta dell'eccezione generata. Viene eseguita solo per gli errori di comunicazione di proxy/canale.

  • Utilizzo dei contratti di errore.

  • Implementazione dell'interfaccia IErrorHandler

  • Gestione degli eventi ServiceHost

Contratti di errore

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. Per impostazione predefinita tutte le eccezioni generate da un'operazione del servizio saranno restituite al client come oggetto FaultException. L'oggetto FaultException conterrà un numero molto contenuto di informazioni. È possibile controllare le informazioni inviate al client definendo un contratto di errori e restituendo l'errore come FaultException<TDetail>. Per altre informazioni, vedere Specifica e gestione di errori in contratti e servizi.

IErrorHandler

L'interfaccia IErrorHandler consente un maggiore controllo delle risposte dell'applicazione WCF agli errori. Fornisce controllo completo sul messaggio di errore restituito al client e consente di eseguire elaborazioni personalizzate dell'errore, ad esempio la registrazione. Per altre informazioni su IErrorHandler ed Estensione del controllo sulla gestione e sulla segnalazione degli errori

Eventi ServiceHost

La classe ServiceHost ospita i servizi e definisce diversi eventi che possono essere necessari per la gestione degli errori. Ad esempio:

  1. Faulted

  2. UnknownMessageReceived

Per altre informazioni, vedere ServiceHost.