2012-11-07 59 views
6

我在Windows Server 2008 R2上運行ASP.Net應用程序。我已經安裝了.NET Framework 4.5。從.NET Framework v2.0遷移到v4.0後,我開始體驗WCF的隨機行爲。WCF隨機返回無效的JSON

我的web服務返回JSON。重新啓動IIS後,服務將返回完全有效的JSON大約3到5次。之後,JSON變得無效。我已經檢查了通過Fiddler傳遞的信息以及我自己在客戶端應用程序(調用服務的Adobe AIR應用程序)和服務器本身上的日誌。

Fiddler顯示原始響應確實包含無效的JSON。看起來非常多的是JSON中的一些隨機點響應JSON開始再次寫出!覆蓋應該在那裏並在過程中產生JSON的JSON。

看到這個級聯的例子:

{"responseCode":0,"actionCode":"OK","cdn{"responseCode":0, "actionCode"..... 

注意如何「responseCode」(這應該只出現在JSON響應的開頭)突然在JSON再次出現進一步上。 "cdn{"responseCode":0當然是無效的JSON。

我已經嘗試了很多補丁。我試過在不同的框架和不同的組合下運行ServiceModelReg.exeaspnet_regiis.exe。同樣的行爲。如果我恢復到v2.0之前的代碼並將App Pool切換回v2.0,那麼一切正常。

我相信這是WCF深處的一個bug。有任何想法嗎?

我現在唯一的辦法是將WCF轉換並轉換到ServiceStack之類的位置,如果需要的話可以調試到所有代碼。

+1

看起來像是某種緩衝的問題,其中一個緩衝區重發,或在一個緩衝區不發送/接收後清零。 –

+4

我不知道任何現有的問題。但是,瞭解您是否可以發佈一段repro代碼會很有幫助。 – Praburaj

+0

你有沒有試過FailedRequestLogging來查看是否有任何可疑的事情要經過這個過程?您是否嘗試過通過JavaScriptSerializer()運行您的返回對象以查看它是否存在故障?如果需要,可以調試到框架中(請參閱:http://msdn.microsoft.com/zh-cn/library/cc667410.aspx)。 – Pete

回答

1

有完全相同的問題。

<system.serviceModel> 
    <diagnostics> 
     <messageLogging logEntireMessage="true" logMessagesAtTransportLevel="true" maxSizeOfMessageToLog="-1" maxMessagesToLog="-1" /> 
    </diagnostics> 
</system.serviceModel> 

<system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel.MessageLogging"> 
      <listeners> 
       <add name="messages" type="MyCustomListener" /> 
      </listeners> 
     </source> 
    </sources> 
</system.diagnostics> 
+0

以上的一些解決方案和評論可能已經奏效。我不知道。我的最終解決方案是放棄WCF並使用服務堆棧。到目前爲止,我發現它是用於實現Web服務的卓越體系結構。 –

0

你設置InstanceContextMode到單/ PerSession:我從我的web.config刪除這些條目2固定呢?

請參閱此... Mix up two responses