Der WCF-JSON-Dienst gibt XML on Fault zurück

9

Ich führe einen ServiceHost aus, um einen meiner Dienste zu testen, und alles funktioniert gut, bis ich eine FaultException geworfen habe - bang bekomme ich XML, nicht JSON

mein Servicevertrag - schön

%Vor%

Host-Einrichtung - scrummy yum

%Vor%

Hier ist der Anruf - oo Bauchschmerzen

%Vor%

Der Text var enthält den richtigen Fehler, aber serialisiert als Xml Was habe ich hier falsch gemacht?

    
Anthony Johnston 22.06.2011, 13:29
quelle

6 Antworten

3

Die Antwort ist, einen IErrorHandler und unterstützendes Verhalten zu implementieren

Ich fand diesen ausgezeichneten Beitrag von iajjuschchell

Ссылка

    
Anthony Johnston 27.07.2011, 12:32
quelle
2

Ich kann die Lösung gerne präsentieren. Ich hatte genau das gleiche Problem und nachdem ich ein wenig mit meiner Endpunktverhaltenskonfiguration verwirrt hatte, entdeckte ich das benötigte Konfigurationselement. Die Lösung besteht darin, zu erzwingen, dass wcf das ausgewählte Format (json) verwendet:

%Vor%

Wie Sie sehen, war der Schlüssel das Attribut "automaticFormatSelectionEnabled".

Viel Spaß mit der WCF wieder

    
Firzen 26.07.2011 02:26
quelle
0

Dies wird Ihnen wahrscheinlich nicht den "Warum" -Teil geben. Schauen Sie sich einen diese Frage . Sie können die Fehler erfassen und neu formatieren, bevor sie als Antwort ausgegeben werden. Dies wird mindestens Ihre Antworten genug json-iize, um Sie in Gang zu bringen. dies hat auch eine ähnliche Idee dahinter .

    
dawebber 22.06.2011 13:38
quelle
0

Laut MSDN-Dokumentation für DataContractJsonSerializer :

"Wenn während der Serialisierung einer ausgehenden Antwort auf dem Server ein Fehler auftritt oder die Antwortoperation aus einem anderen Grund eine Ausnahme auslöst, wird sie möglicherweise nicht als Fehler an den Client zurückgegeben."

Auch das ist reine Spekulation, aber es sieht fast so aus, als würde dieser Serializer nach XML serialisieren und dann in JSON konvertieren. Wenn der Fehler auftritt, wird er mitten im Prozess unterbrochen. Dann könnte ich wieder völlig falsch liegen.

Viel Glück.

    
OpticalDelusion 22.06.2011 14:44
quelle
0

Ich verstehe nicht, warum Sie WebRequest zum Aufrufen eines WCF-Dienstes verwenden. Gibt es einen bestimmten Grund dafür? Woher weißt du, wenn du das WebException handelst, dass es ein FaultException<CategoryNotFound> ist?
Wenn Sie einen Dienstproxy verwenden und Ihr Dienst FaultException<T> ausgibt, ist es wahrscheinlich besser, Ihre try-catch wie folgt zu schreiben:

%Vor%     
RoelF 30.06.2011 08:41
quelle
0
%Vor%     
user3122153 20.12.2013 09:28
quelle

Tags und Links