Frage

Wir entwickeln einen neuen Web-Service und suchen in die „best practice“ für Fehler in der Seife Antwort zurück.

Wir waren auf der Suche in eine Fehlerantwortobjekt zu schaffen, die jede Antwort als eine Eigenschaft enthalten würde. Dies scheint ein wenig schwer aber und fragt sich, ob es möglich ist, die SOAP-Header zu verwenden, um diese Informationen zu tragen? Wie Sie in der Regel mit eigenen Fehlern mit SOAP umgehen?

War es hilfreich?

Lösung

SOAPFault wird verwendet, Fehler- und Statusinformationen zu halten, und Server gibt 500 im HTTP-Header für sie es als Fehler angeben.

siehe

die Spezifikation von W3.org

http://www.w3.org/TR/ 2000 / NOTE-SOAP-20.000.508 / # _ Toc478383507

Sie können Ihre eigenen Informationen Token entwerfen, indem sie entweder in Seifen Header oder sogar innerhalb eines Elements in Ihrem Rückergebnis platzieren, solange Sie es dokumentieren eindeutig für Dritte. Aber das ist nicht der normale Weg ist zum Anheben Fehler gehen.

Andere Tipps

Soap bereits benutzerdefinierte Header für die Fehlerinfo verwendet, alles, was Sie tun müssen, ist eine Ausnahme auf der Server-Seite zu werfen, und Ausnahme auf der Client-Seite als Soap .

Sie können Soapexceptions auf dem server geworfen, wenn Sie mehr Kontrolle über die Ausnahmemeldung / Infos mögen.

Edit: Für zusätzliche Informationen zusammen mit der Anforderung, können benutzerdefinierte SOAP-Header verwendet werden. Hier sind ein Beispiel Artikel über Codeproject , die benutzerdefinierten SOAP-Header zur Authentifizierung verwendet, aber benutzerdefinierten Seife-Header können für andere Zwecke, wie das Senden zusätzliche Informationen verwendet werden, die nicht unbedingt eine Fehlerbedingung ist (kann Business-Logik-Info)

Ich habe für komplexe Operationen ähnliche Techniken in der Vergangenheit verwendet. Vor allem, wenn Sie brauchen (mehrere?) Fehlerbeschreibungen sowie als Fehlercode an.

Soap-Header sind für Out-of-Band-Informationen, und sollen nicht für Fehlermeldungen verwendet werden. Außerdem Seife Header sollten nicht in Seife Reaktionen verwendet werden, weil:

  • wenn mustunderstand fehlt oder 0 ist, kann der Kunde sicher ignorieren.
  • wenn mustunderstand 1 ist, kann der Client nicht signalisieren sie es nicht verstehen (da es sich um eine Antwort ist).

Und ja, ich weiß, dass einige WS- * Standards beschreiben Seife Header in der Antwort ...

So

Seife Fehler für Fehler verwenden, die so schwerwiegend sind, dass es keine Reaktion Objekt ist. Fügen Sie einen Status Token an die Antwort für Warnungen und Informationsmeldungen.

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