Frage

Ich bin mir nicht sicher, ob ich ganz glücklich bin, dass Ausnahmen in Web Service ist eine gute Idee zu werfen. Ich würde nicht so viel dagegen, wenn es nicht für den Stack-Trace ist. Das ist nicht etwas, das ich wan't.

Ich habe um mehrere Implementierungen recherchiert und es wirklich scheint kein Konsens darüber zu sein. CampaignMonitor zum Beispiel funktioniert ein Ergebnis Objekt zurückgeben, aber andere nicht.

Architektonisch, ich bin nicht sicher, ob ein Rückgabeobjekt Rückkehr Sinn macht, sicher eine Ausnahme ist eine Ausnahme, aber was ich wie zu einem Return-Objekt zu tun ist, dass es eine anmutige Lösung für den Endanwender ist.

Hat jemand eine bessere Lösung hat?

EDIT

BTW bin ich mit ASMX Web-Service, wo Custom Anschalten keine Option ist.

War es hilfreich?

Lösung

Welche Stack-Trace reden Sie? Haben Sie versucht das?

In beiden ASMX und WCF-Dienste wird eine abgefangene Ausnahme in eine SOAP-Fehler übersetzt werden. In beiden Fällen können sie keinen Stack-Trace enthalten sein konfiguriert. In der Tat, das ist der Standard in WCF.

Also, der richtige Weg, einen Fehler wie dies durch einen Fehler zurück. Eine Möglichkeit, Fehler zu erzeugen, ist zu werfen und nicht eine Ausnahme zu behandeln.

Andere Tipps

Lassen Sie nicht die Tatsache, dass Sie in einem Web-Service sind verwirren das Problem. Das ist nur eine Implementierung Detail.

Verwenden Sie Ihre normale Ausnahmebehandlung Strategie. Best practice sagt Bein keine Ausnahmen in geringen Code - es sei denn, Sie es, dass die Ausnahme auflösen kann und weiterhin normal. Ausnahmen sollten auf die Präsentationsschicht angehoben werden, so dass der Benutzer über den Fehler informiert werden.

So wie angewandt, um Web-Service - in der Regel Ausnahmen werfen (was zu einer SoapFault). Dies ermöglicht es dem rufenden Client-Code seiner eingebauten in Ausnahmebehandlung Standard zu verwenden, um es zu behandeln.

ein Ansatz zur Trennung von System- und Geschäft Fehlern. (Systemfehler: zum Beispiel fehlerhafte Anfrage, benutzer nicht-autorisierte, etc .; Business-Fehler: zum Beispiel Verfahren UpdateCars führt zu einem Fehler, der Benutzer besitzen keine Autos).

Im Falle eines Geschäfts Fehler, Rückkehr ein Antwortobjekt eine Fehlerbeschreibung enthält; im Fall eines Systemfehlers, eine Ausnahme aus.

Können Sie ein wenig erläutern? Die Server-Seite eines Web-Service kann eine Ausnahme auslösen. Der Server-Seite eines Web-Service können Sie eine Nachricht an den Client-Seite zurückzukehren. Diese Botschaft kann Fehlerinformationen enthalten, und dass Fehlerinformationen können speziell Ausnahme Details enthalten. Oder auch nicht. Auf der Client-Seite, haben Sie in der Regel eine generierte Proxy mit der Nachricht vom Server zu befassen. Dieser Proxy kann eine Ausnahme erzeugen, wenn die Antwortfehlerinformationen enthalten.

, die Teil dieses Szenarios fragen Sie?

Ich nehme an, dass Ausnahmen werfen im Allgemeinen ein besseres Design-Muster ist dann ein Ergebnis zurück. Ich nehme an, dass Sie tun müssen, ist in Ihrem Web-Services-Stack-Trace zu verbergen, indem das folgende Muster als Web-Service ausgesetzt jede Methode anwenden:

  

public void MyWebServiceMethod ()   {
    versuchen
    {

 ///Do something that may cause an error
     

} catch (Exception ex)
     {         throw new Application ( "Benutzerfreundlich   descritption ausnahmsweise ");

     

}

     

}

oder Sie können auch

  

catch (Exception ex) {       werfen ex; }

Wenn Sie eine Ausnahme erneut werfen, werden Sie von den Kunden Ihres Web-Service ursprünglichen Stack-Trace verbergen.

Ich sehe nicht, warum Sie nicht beides tun können? Fängt die Ausnahme, meldet sie (entweder an eine DB oder zu einer Datei), dann wieder einen Fehlercode. Auf diese Weise haben Sie eine anmutige Ausführung des Webservice Aufruf, und auch die Mitteilung über den Fehler, und Sie haben einen Platz an anderer Stelle können Sie Debug weiter.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top