Gestione e generazione di eccezioni nei servizi Web XML

Questo argomento è specifico di una tecnologia legacy. Servizi Web XML e client di servizi Web XML devono essere creati attualmente tramite Windows Communication Foundation.

Le eccezioni restituite da un metodo del servizio Web creato utilizzando ASP.NET vengono rinviate al client sotto forma di un errore SOAP. Un errore SOAP è un elemento XML Fault all'interno di un messaggio SOAP che specifica quando si verifica un errore. Può contenere dettagli quali la stringa e l'origine dell'eccezione. Per ulteriori informazioni sugli errori SOAP, vedere la documentazione sulla specifica SOAP, sul sito Web di W3C all'indirizzo http://www.w3.org/TR/SOAP (informazioni in lingua inglese).

Fortunatamente, client e servizi Web creati utilizzando ASP.NET, non popolano e non analizzano direttamente l'elemento XML Fault, ma utilizzano il modello di progettazione comune per generare e rilevare eccezioni in .NET Framework. Un servizio Web può generare un'eccezione SoapException generica o un'eccezione specifica, relativa al problema, ad esempio un'eccezione ArgumentOutOfRangeException. Ad ogni modo, ASP.NET serializza l'eccezione in un messaggio SOAP valido posizionando l'eccezione in un elemento SOAP Fault. Quando il messaggio SOAP viene deserializzato su un client ASP.NET, l'errore SOAP viene convertito in un'eccezione SoapException, con i dettagli dell'eccezione situati nella proprietà Message. In questo modo un client può configurare un blocco try/catch per intercettare una classe SoapException. Un esempio di codice di un servizio Web che genera un'eccezione viene fornito in Procedura: generare eccezioni in servizi Web XML creati con ASP.NET. Un esempio di codice di un client di un servizio Web che rileva un'eccezione viene fornito in Procedura: gestire le eccezioni generate da un metodo di servizio Web.

Un'applicazione Web può comprendere più servizi Web. Tuttavia, è impossibile utilizzare l'evento Application_Error all'interno del file Global.asax Syntax per la gestione di tutte le eccezioni. HttpHandler per servizi Web individua tutte le eccezioni che si verificano mentre un servizio Web è in esecuzione e le trasforma in un errore SOAP prima che l'evento Application_Error venga chiamato. Compilare un'estensione SOAP per elaborare le eccezioni del servizio Web in un gestore di eccezioni globale. Un'estensione SOAP può verificare l'esistenza di un'eccezione nel metodo ProcessMessage. All'interno del metodo ProcessMessage, controllare la proprietà Exception di SoapMessage passata quando la proprietà Stage è impostata su AfterSerialize. Per ulteriori informazioni sulle estensioni SOAP, vedere Modifica di messaggi SOAP utilizzando estensioni SOAP.

Generazione di eccezioni da un servizio Web creato utilizzando ASP.NET

Il rinvio di errori a un client viene effettuato generando eccezioni. Un metodo del servizio Web può realizzare quest'operazione nei modi seguenti:

  • Generando un'eccezione SoapException.

  • Generando un'eccezione SoapHeaderException.

  • Generando un'eccezione specifica per il problema.

  • Consentendo a ASP.NET di generare l'eccezione.

Nella tabella seguente sono descritte le eccezioni che un servizio Web può generare in modo esplicito e il modo in cui un client ASP.NET riceve ogni eccezione:

Tipo di eccezione generata Ciò che può fare un servizio Web, cosa riceve il client

Eccezione diversa da SoapException o SoapHeaderException

Un metodo del servizio Web rileva un caso di eccezione e genera l'eccezione specifica, ad esempio ArgumentOutOfRangeException. Il client .NET Framework riceve un'eccezione SoapException con i dettagli serializzati nel testo nella proprietà Message.

SoapException

Un metodo del servizio Web rileva un caso di eccezione e genera un'eccezione SoapException. Fornisce anche dettagli aggiuntivi riguardo al problema. Per fornire queste informazioni aggiuntive il metodo del servizio Web popola la proprietà Detail. Un client di .NET Framework riceve la classe SoapException con le informazioni aggiuntive.

SoapHeaderException

Un metodo del servizio Web rileva un caso di eccezione durante l'elaborazione di un elemento SOAP Header. Il metodo del servizio Web genera un'eccezione SoapHeaderExceptionche traduce in un elemento Fault situato all'interno dell'elemento della risposta Header. L'errore deve essere visualizzato nell'intestazione della risposta in questa situazione secondo la specifica SOAP. Un client .NET Framework riceve la classe SoapHeaderException.

È necessario generare un'eccezione specifica per il problema o fornire ulteriori informazioni a una SoapException o SoapHeaderException, come descritto nella tabella precedente.

Eccezioni non gestite da un metodo del servizio Web XML

Se un metodo del servizio Web non rileva un'eccezione che si verifica all'interno del metodo, la tabella seguente delinea come viene l'eccezione da ASP.NET.

Quando si verifica un'eccezione non gestita. Cosa fa ASP.NET

Durante l'esecuzione del metodo del servizio Web

L'eccezione viene rilevata da ASP.NET e rinviata al client. Il client del servizio Web creato utilizzando .NET Framework riceve un'eccezione SoapException con i dettagli dell'eccezione situati nella proprietà Message.

Durante l'elaborazione di intestazioni SOAP

ASP.NET genera un'eccezione SoapHeaderException. Un client del servizio Web creato utilizzando .NET Framework riceve la classeSoapHeaderException.

Vedere anche

Attività

Procedura: generare eccezioni da un servizio Web creato tramite ASP.NET
Procedura: gestire le eccezioni generate da un metodo del servizio Web

Riferimento

SoapException Class
SoapHeaderException Class

Concetti

Compilazione di client dei servizi Web XML

Altre risorse

Handling and Throwing Exceptions
Creare servizi Web XML mediante ASP.NET