Ich verwende eine ASP.Net-App unter Windows Server 2008 R2. Ich habe bis zu .NET Framework 4.5 installiert. Bei der Migration von .NET Framework 2.0 auf Version 4.0 habe ich zufälliges Verhalten von WCF erfahren.Ungültiger JSON, der zufällig von WCF zurückgegeben wird
Mein Webdienst gibt JSON zurück. Nach dem Neustart von IIS wird der Dienst JSON ca. 3 bis 5 Mal fehlerfrei ausgeben. Danach wird der JSON ungültig. Ich habe überprüft, was über die Leitung über Fiddler kommt und auch meine eigenen Logs sowohl auf Client-App (eine Adobe AIR-App, die den Dienst aufruft) und auf dem Server selbst.
Fiddler zeigt, dass die rohe Antwort tatsächlich ungültige JSON enthält. Es scheint sehr, dass ein zufälliger Punkt in der JSON die Antwort JSON beginnt, wieder ausgeschrieben zu werden !, überschreiben, was da sein sollte und produzierten JSON in diesem Prozess.
dieses verketteten Beispiel Siehe:
{"responseCode":0,"actionCode":"OK","cdn{"responseCode":0, "actionCode".....
Hinweis wie „Response“ (die erst am Anfang der JSON-Antwort erscheinen sollen) in der JSON erscheint plötzlich wieder weiter. "cdn{"responseCode":0
ist natürlich ungültig JSON.
Ich habe zahlreiche Patches ausprobiert. Ich habe versucht, ServiceModelReg.exe
und aspnet_regiis.exe
von unter verschiedenen Frameworks und in verschiedenen Kombinationen ausgeführt. Gleiches Verhalten. Wenn ich unter v2.0 zum vorherigen Code zurückwechsle und den App Pool wieder auf v2.0 umschalte, funktioniert alles einwandfrei.
Ich glaube, dass dies ein Fehler in der WCF ist. Irgendwelche Ideen?
Die einzige Möglichkeit, die ich an dieser Stelle habe, besteht darin, WCF zu entfernen und zu etwas wie ServiceStack zu wechseln, wo ich bei Bedarf den gesamten Code debuggen kann.
sieht aus wie eine Art von Puffer Problem, wo ein Puffer erneut übertragen wird, oder wo ein Puffer nicht nach der Sende-/Empfangs gelöscht wird. –
Mir sind keine bestehenden Probleme bekannt. Aber es wäre hilfreich zu verstehen, ob Sie einen Reprocode schreiben können. – Praburaj
Haben Sie FailedRequestLogging versucht, um zu sehen, ob es etwas Fischiges durch den Prozess geht? Haben Sie versucht, Ihre Rückgabeobjekte über JavaScriptSerializer() auszuführen, um festzustellen, ob ein Fehler darin enthalten ist? Sie können bei Bedarf in das Framework debuggen (siehe: http://msdn.microsoft.com/en-us/library/cc667410.aspx). – Pete