2016-07-20 13 views
0

Ich konsumiere einen WCF-Webservice. Ich stelle syntaktisch korrekte XML-Daten zur Verfügung, aber einer der anwendungsspezifischen Codes ist manchmal falsch (korrekter Datentyp, aber kein gültiger Wert - übergibt die xsd-Anweisung). Der Web-Service gibt eine detaillierte Antwortnachricht in dem Antworttext und einen HTML-Statuscode der fehlerhaften Anforderung 400 zurück. Aufgrund des Statuscodes der fehlerhaften Anforderung 400 löst der WCF-Web-Service-Proxy sofort eine Ausnahme aus, und das ResponseBody kann nie abgefragt werden detaillierte Nachricht. Der einzige Weg, wie ich die detaillierte Validierungsnachricht sehen kann, besteht darin, die Web-Service-Ablaufverfolgung einzuschalten und die Ablaufverfolgungsdatei anzuschauen (offensichtlich bedeutet das, dass die Anforderung erneut ausgeführt wird und sehr zeitaufwendig ist).Was ist der korrekte HTTP-Statuscode für einen WCF-Webdienst, der zurückgegeben wird, wenn der Inhalt der Anforderungsdaten ordnungsgemäß erstellt wurde, die Datenüberprüfung jedoch fehlschlägt?

Ich denke, dass der Bad Request 400 Statuscode für diese Situation falsch ist. Was mir nicht klar ist, ist der richtige Status. Hinweis: Dies ist keine WebAPI-REST, dies ist der WCF-Webdienst.

Ich denke, 200 OK wäre gut, da die eigentliche Anfrage gut gebildet wurde, aber der Inhalt war ungültig. Sehen Sie sich dann den Antwortkörper für den tatsächlichen Status an.

Best Practice Antworten bitte.

Vielen Dank,

James

Antwort

2

die noch ein 400-Statuscode sein würde. Die Daten waren aus irgendeinem Grund schlecht.

Ich konnte auch sehen, eine 500-Typ-Antwort verwendet, aber es ist nicht unbedingt unerwartete Daten.

https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

+0

Ich bin immer noch nicht einverstanden. Der Dienst liefert detaillierte detaillierte Fehlermeldungen in der Antwortdatenbank, aber dies bricht den WS-I-Standard. Wenn Sie einen responseBody zurückgeben, ist der einzige korrekte Statuscode 200 (OK). Sie verwenden keine SOAP-Fehler wie in der Norm definiert. Wir können die detaillierte Fehlermeldung nicht lesen, ohne die Ablaufverfolgung zu aktivieren, den Aufruf erneut auszuführen und das Ablaufverfolgungsprotokoll zu durchsuchen. Dies ist ein enormer Overhead für den Support. http://ws-i.org/profiles/basicprofile-2.0-2010-11-09.html#SOAP_Fault_Processing –

+0

Klingt wie Ihr versucht, ein Protokollierungsproblem zu lösen. Ihr WCF-Dienst sollte einige Protokollierung um seine Ausnahmen und wenn sie auftreten, gewickelt haben. –