Freigeben über


Behandeln und Auslösen von Ausnahmen in XML-Webdiensten

Dieses Thema bezieht sich auf eine veraltete Technologie. XML-Webdienste und XML-Webdienstclients sollten nun mithilfe der folgenden Technologie erstellt werden: Windows Communication Foundation.

Von einer Methode eines mit ASP.NET erstellten Webdiensts ausgelöste Ausnahmen werden in Form eines SOAP-Fehlers an den Client zurückgesendet. Ein SOAP-Fehler ist ein in einer SOAP-Nachricht enthaltenes Fault-XML-Element, das das Auftreten eines Fehlers angibt. Es kann Details wie die Ausnahmezeichenfolge und die Quelle der Ausnahme enthalten. Nähere Informationen zu SOAP-Fehlern finden Sie in der SOAP-Spezifikation auf der W3C-Website unter http://www.w3.org/TR/SOAP.

Das XML-Element Fault wird von den mit ASP.NET erstellten Clients und Webdiensten nicht direkt aufgefüllt oder analysiert, sondern es wird das im .NET Framework enthaltene allgemeine Entwurfsmuster für das Auslösen und Abfangen von Ausnahmen verwendet. Webdienste können entweder eine generische SoapException-Ausnahme oder eine auf das Problem bezogene Ausnahme, z. B. ArgumentOutOfRangeException, auslösen. In beiden Fällen serialisiert ASP.NET die Ausnahme in eine gültige SOAP-Nachricht, indem die Ausnahme in einem SOAP-Element des Typs Fault platziert wird. Bei der Serialisierung der SOAP-Nachricht auf einem ASP.NET-Client wird der SOAP-Fehler in eine SoapException-Ausnahme umgewandelt, wobei die Details der Ausnahme in die Message-Eigenschaft eingefügt werden. Ein Client kann so einen try/catch-Block zum Abfangen von Ausnahmen des Typs SoapException einrichten. Ein Codebeispiel für einen Webdienst, der eine Ausnahme auslöst, enthält das Thema Vorgehensweise: Auslösen von Ausnahmen von einem mit ASP.NET erstellten Webdienst. Ein Codebeispiel für einen Webdienstclient, der eine Ausnahme abfängt, enthält das Thema Vorgehensweise: Behandeln von Ausnahmen, die von einer Webdienstmethode ausgelöst wurden.

Eine Webanwendung kann mehrere Webdienste umfassen. Aber das Application_Error-Ereignis innerhalb der Datei Global.asax Syntax kann nicht zur globalen Ausnahmebehandlung verwendet werden. Der HTTP-Handler für XML-Webdienste verwendet alle Ausnahmen, die während der Ausführung eines Webdiensts auftreten, und wandelt sie vor dem Aufrufen des Application_Error-Ereignisses in SOAP-Fehler um. Erstellen Sie eine SOAP-Erweiterung, um Ausnahmen von Webdiensten in einem globalen Ausnahmehandler zu verarbeiten. Eine SOAP-Erweiterung kann überprüfen, ob in der ProcessMessage-Methode eine Ausnahme vorliegt. Überprüfen Sie in der ProcessMessage-Methode die Exception-Eigenschaft der SoapMessage-Instanz, die übergeben wird, wenn die Stage-Eigenschaft auf AfterSerialize festgelegt ist. Nähere Informationen zu SOAP-Erweiterungen finden Sie unter SOAP-Nachrichtenänderungen mit SOAP-Erweiterungen.

Auslösen von Ausnahmen von einem mit ASP.NET erstellten Webdienst

Fehler werden durch das Auslösen von Ausnahmen zurück an einen Client übermittelt. Einer Webdienstmethode stehen dazu folgende Möglichkeiten zur Verfügung:

  • Auslösen einer SoapException-Ausnahme.

  • Auslösen einer SoapHeaderException-Ausnahme.

  • Auslösen einer problemspezifischen Ausnahme.

  • Auslösen der Ausnahme durch ASP.NET.

In der folgenden Tabelle wird beschrieben, welche Ausnahmen von einem Webdienst explizit ausgelöst werden können und wie die einzelnen Ausnahmen von einem ASP.NET-Client empfangen werden:

Typ der ausgelösten Ausnahme Welche Möglichkeiten hat der Webdienst? Was empfängt der Client?

Andere Ausnahme als SoapException oder SoapHeaderException

Eine Webdienstmethode erkennt einen Ausnahmefall und löst die jeweilige Ausnahme aus, z. B. ArgumentOutOfRangeException. Ein .NET Framework-Client empfängt eine SoapException, deren Details in der Message-Eigenschaft in Textform serialisiert sind.

SoapException

Eine Webdienstmethode erkennt einen Ausnahmefall und löst eine SoapException aus. Darüber hinaus stellt sie zusätzliche problemspezifische Details zur Verfügung. Die Webdienstmethode füllt die Detail-Eigenschaft mit Daten auf, um diese zusätzlichen Informationen bereitzustellen. Ein .NET Framework-Client empfängt die SoapException mit den zusätzlichen Informationen.

SoapHeaderException

Eine Webdienstmethode erkennt beim Verarbeiten eines Header-SOAP-Elements einen Ausnahmefall. Die Webdienstmethode löst eine SoapHeaderException aus, die in ein Fault-Element übersetzt wird, das im Header-Element der Antwort platziert wird. Der Fehler muss in dieser Situation gemäß der SOAP-Spezifikation im Antwortheader angezeigt werden. Ein .NET Framework-Client empfängt die SoapHeaderException.

Lösen Sie die problemspezifische Ausnahme aus, oder stellen Sie wie in der vorstehenden Tabelle beschrieben in einer Ausnahme des Typs SoapException oder SoapHeaderException zusätzliche Details bereit.

Von einer XML-Webdienstmethode nicht behandelte Ausnahmen

In der folgenden Tabelle wird beschrieben, wie eine Ausnahme von ASP.NET behandelt wird, wenn eine innerhalb der Methode aufgetretene Ausnahme nicht von einer Webdienstmethode abgefangen wird.

Zeitpunkt des Auftretens einer nicht behandelten Ausnahme Von ASP.NET ausgeführte Aktion

Während der Ausführung der Webdienstmethode

Die Ausnahme wird von ASP.NET abgefangen und zurück an den Client übergeben. Der mit .NET Framework erstellte Webdienstclient empfängt eine SoapException, die in der Message-Eigenschaft die Ausnahmedetails enthält.

Während der Verarbeitung von SOAP-Headern

ASP.NET löst eine SoapHeaderException aus. Ein mit .NET Framework erstellter Webdienstclient empfängt die SoapHeaderException.

Siehe auch

Aufgaben

Vorgehensweise: Auslösen von Ausnahmen von einem mit ASP.NET erstellten Webdienst
Vorgehensweise: Behandeln von durch eine Webdienstmethode ausgelösten Ausnahmen

Verweis

SoapException Class
SoapHeaderException Class

Konzepte

Erstellen von XML-Webdienstclients

Weitere Ressourcen

Handling and Throwing Exceptions
XML-Webdienste, die ASP.NET verwenden