Condividi tramite


Gestione degli errori WCF

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

  1. Errori di comunicazione

  2. Errori Proxy/Canale

  3. Errori delle applicazioni

Gli errori di comunicazione si verificano quando una rete non è disponibile, un client usa un indirizzo non corretto o l'host del servizio non è in ascolto dei messaggi in arrivo. Gli errori di questo tipo vengono restituiti al client come classi derivate da CommunicationException o CommunicationException.

Gli errori proxy/canale sono errori che si verificano all'interno del canale o del proxy stesso. Gli errori di questo tipo includono: tentativo di usare un proxy o un canale chiuso, esiste una mancata corrispondenza del contratto tra il client e il servizio oppure le credenziali del client vengono rifiutate dal servizio. Ci sono molti tipi diversi di errori in questa categoria, troppi da elencare qui. Gli errori di questo tipo vengono restituiti al client as-is (nessuna trasformazione viene eseguita sugli oggetti eccezione).

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

La gestione degli errori in WCF viene eseguita da una o più delle operazioni seguenti:

  • Gestione diretta dell'eccezione generata. Questa operazione viene eseguita solo per errori di comunicazione e proxy/canale.

  • Uso dei contratti di guasto

  • Implementazione dell'interfaccia IErrorHandler

  • Gestione degli ServiceHost eventi

Contratti di errore

I contratti di errore consentono di definire gli errori che possono verificarsi durante l'operazione del servizio in modo indipendente dalla piattaforma. Per impostazione predefinita, tutte le eccezioni generate dall'interno di un'operazione del servizio verranno restituite al client come FaultException oggetto . L'oggetto FaultException conterrà pochissime informazioni. È possibile controllare le informazioni inviate al client definendo un contratto di errore e restituendo l'errore come .FaultException<TDetail> Per altre informazioni, vedere Specifica e gestione degli errori nei contratti e nei servizi.

Interfaccia di gestione degli errori (IErrorHandler)

L'interfaccia IErrorHandler consente di controllare maggiormente il modo in cui l'applicazione WCF risponde agli errori. Offre il controllo completo sul messaggio di errore restituito al client e consente di eseguire l'elaborazione degli errori personalizzata, ad esempio la registrazione. Per altre informazioni sulla IErrorHandler

ServiceHost Eventi

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

  1. Faulted

  2. UnknownMessageReceived

Per altre informazioni, vedere ServiceHost