Sto eseguendo un'applicazione ASP.Net su Windows Server 2008 R2. Ho installato .NET Framework 4.5. Dopo la migrazione da .NET Framework v2.0 alla v4.0 ho iniziato a sperimentare un comportamento casuale da WCF.JSON non valido restituito in modo casuale da WCF
Il mio servizio Web restituisce JSON. Al riavvio di IIS, il servizio restituirà JSON perfettamente valido circa da 3 a 5 volte. Dopodiché, il JSON non è più valido. Ho ispezionato ciò che sta arrivando attraverso Fiddler e anche i miei registri su entrambe le app client (un'app Adobe AIR che chiama il servizio) e sul server stesso.
Fiddler mostra che la risposta non elaborata contiene infatti JSON non valido. Appare molto che un certo punto casuale nel JSON la risposta JSON inizi a essere scritto di nuovo !, sovrascrivendo quello che dovrebbe essere lì e producendo un JSON manglinato nel processo.
Vedi questo esempio concatenati:
{"responseCode":0,"actionCode":"OK","cdn{"responseCode":0, "actionCode".....
noti come "responseCode" (che dovrebbe apparire solo all'inizio della risposta JSON) appare improvvisamente di nuovo in JSON più avanti. "cdn{"responseCode":0
è ovviamente JSON non valido.
Ho provato numerose patch. Ho provato a eseguire ServiceModelReg.exe
e aspnet_regiis.exe
da diverse strutture e in diverse combinazioni. Stesso comportamento. Se ritorna al codice precedente sotto v2.0 e rimando il Pool di App alla v2.0, allora tutto funziona correttamente.
Credo che questo sia un bug in profondità nella WCF. Qualche idea?
L'unica risorsa che ho a questo punto è di estrarre WCF e passare a qualcosa come ServiceStack dove posso eseguire il debug di tutto il codice, se necessario.
sembra una sorta di problema di buffer, in cui viene ritrasmesso un buffer, o dove un buffer non viene eliminato dopo la trasmissione/ricezione. –
Non sono a conoscenza di problemi esistenti al riguardo. Ma sarebbe utile capire se è possibile pubblicare un pezzo di codice di riproduzione. – Praburaj
Hai provato FailedRequestLogging per vedere se c'è qualcosa di strano durante il processo? Hai provato a eseguire gli oggetti di ritorno tramite JavaScriptSerializer() per vedere se c'è un problema tecnico? È possibile eseguire il debug nel framework, se necessario (consultare: http://msdn.microsoft.com/en-us/library/cc667410.aspx). – Pete