Abfangen einer benutzerdefinierten Ausnahme, die von einer WebMethod in ASP.NET WebService ausgelöst wird

8

Ich habe einen klassischen asp.net Webservice (asmx) und eine Webmethode darin. Ich muss eine benutzerdefinierte Ausnahme für einen bestimmten Fall in meiner Webmethode auslösen, und ich muss diese spezifische benutzerdefinierte Ausnahme abfangen, wo ich die Web-Service-Methode aufrufen.

%Vor%

Eingabe-, Ausgabe- und Ausnahmeklassen als Beispiel:

%Vor%

Auf der Client-Seite brauche ich:

%Vor%

Das kann ich jedoch nicht tun, weil ich beim Hinzufügen der Webdienst-Referenz auf dem Client Dienstklassen, Eingabe- und Ausgabeklassen habe, aber keine benutzerdefinierte Ausnahmeklasse.

Auch ein weiteres Problem ist, dass ich auch Probleme mit der Serialisierung der Exception-Klasse habe (wegen der Exception.Data-Eigenschaft implementiert die IDictionary-Schnittstelle)

Gibt es eine Möglichkeit, dies auf meine Art zu tun, oder bin ich völlig falsch oder fehlt etwas an den Grundlagen von Webdiensten?

Danke.

    
Musa Hafalır 01.10.2010, 12:55
quelle

2 Antworten

11

Der ASP.NET-Webdienst kann alle Arten von Ausnahmen auslösen: SoapException, HelloWorldException oder so. Die Ausnahme wird jedoch in ein SOAP-Fault-Element serialisiert. Unabhängig vom Typ der Ausnahme, die im Service ausgelöst wird, wird die Ausnahme während der Deserialisierung in eine SoapException konvertiert. Daher ist es nicht möglich, die HelloWorldException mit meinem catch-Block in meiner Frage abzufangen, selbst wenn ich die HelloWorldException für den Client bereitstelle.

Für einen ASP.NET-Client besteht die einzige Möglichkeit darin, die Ausnahme als SoapException abzufangen und sie mit der Eigenschaft Actor oder SoapFaultSubCode zu behandeln.

Ich habe mein Problem im Grunde wie folgt gelöst:

Web Service:

%Vor%

Kunde:

%Vor%

Zusammen mit dem Dokument, das Bryce Fischer in seiner Antwort schrieb; Diese msdn-Dokumente enthalten auch hilfreiche Informationen zum Übergeben und Behandeln von Web-Service-Ausnahmen.

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

>

Vorgehensweise: Behandeln von Ausnahmen, die von einer Web-Service-Methode ausgelöst werden

    
Musa Hafalır 25.11.2010, 15:32
quelle
4

Das kann hilfreich sein. Sieht so aus, als ob Sie eine SoapException erhalten, aber Sie können die Details überprüfen, um festzustellen, ob es Ihre Klasse ist oder nicht.

Randnotiz, um Zugriff auf "HelloWorldException" zu haben, können Sie es in eine separate Assembly ziehen und auf dem Client bereitstellen ...

    
Bryce Fischer 01.10.2010 15:08
quelle

Tags und Links