2012-09-30 63 views
6

我正在管理一個網站,該網站在過去幾個月通過使用MVC 3.0 ASP.net構建的IIS 7.5上運行良好。無論何時,當我們的AJAX POST請求(通過jQuery解僱)失敗時,我們都會遇到問題,因爲發佈的JSON被截斷。內容HTTP請求的長度>正文大小

到目前爲止,我們發現的是,對於所有這樣的請求,請求的「Content-Length」標頭包含的數據比實際獲得的數據要多。

我們已經設置的maxRequestLength在我們的web.config 51200,我相信maxAllowedContentLength的價值有一個相當大的默認值(我們沒有設置在我們的配置)。此外,我有一個失敗的請求,其「內容長度」低至7301(字節),但我們只能得到2179字節。所以我並沒有懷疑這會受到任何限制。是

對有問題的請求請求頭如下

  • 緩存控制:無緩存
  • 連接:保持活躍
  • 雜注:無緩存
  • 內容長度:7301
  • Content-Type:application/json;字符集= UTF-8;
  • 接受:application/json,text/javascript,/; Q = 0.01
  • 接受編碼:gzip,放氣
  • 接受語言:EN-US,連接; Q = 0.5
  • 的User-Agent:Mozilla的/ 5.0(Windows NT的6.1; WOW64; RV:15.0)壁虎/ 20100101火狐/ 15.0.1
  • X-要求 - 由於:XMLHttpRequest的

任何想法?


更新:我已經能夠進一步從我們的代碼隔離問題。已經編寫了一個獨立的控制器,它接受一個JSON字符串並將其反序列化。如果發生錯誤,它會記錄錯誤。

當我在一個包含50個請求的循環中併發了150個併發線程的控制器時,我得到了一些失敗,這個控制器接收到的JSON被截斷。現在我們強烈關注優化IIS並閱讀更多關於可能相關的各種參數(目前我們正在使用IIS上的默認參數運行)。

我強烈地感覺到150個併發連接不應該是一個大問題,我真誠希望調整一些參數,我們應該能夠克服這個問題。一旦我們通過這個問題,將分享我的發現。


* 更新2(10月8日)*:我已經進一步縮小的問題。我在IIS打開錯誤日誌,發現我的失敗請求讀取數據時

BytesReceived = 0 
ErrorCode = 2147943395 
Error Description = "The I/O operation has been aborted because of either a thread exit or an application request.(0x800703e3)" 

我發現有關IIS論壇此錯誤信息,但我還沒有與所給定的(複式)建議進行試驗得到下面的錯誤。下面的鏈接可以是一個很好的起點,在此

http://forums.iis.net/p/1149787/1917288.aspx

+0

選中此http://stackoverflow.com/questions/10966328/the-json-request-was-too-large-to-be -deserialized/10969382#10969382 – VJAI

+0

你知道內容被截斷的位置嗎?它在進入Ajax調用之前是否在瀏覽器中?是否將它寫入Ajax調用?它是否在HTTP傳輸?它發生在一些服務器端腳本中嗎? – pieman72

+0

感謝您的回覆。 @Mark - 我不認爲這與JSON的大小有關(反序列化時我沒有得到最大大小錯誤)。不幸的是,我不知道數據在哪裏被截斷。我知道控制器正在截斷數據。我也知道發生這個問題的大部分時間,使用的瀏覽器都是IE 8.我仍然在調試,希望很快就能看到這個問題的底部 - 會發布我的發現。 –

回答

1

我終於想通了,原因和解決方案修復搜索更多。不幸的是,它不適用於我的所有環境,但有助於生產環境。在下面查找詳細信息

原來,這是由於Windows 2008 R2中的一個錯誤,它使得asp.net相信即使客戶端沒有斷開連接,也會斷開連接。相同的修補程序可用,可在http://support.microsoft.com/kb/977453找到。該修復程序已經是Windows 2008 R2 SP1的一部分(可從here找到)。

儘管此修補程序在運行Windows 2008 R2的一個環境中適用於我,但無法應用於帶有SP1的Windows 2008 R2。不幸的是,問題仍然可以在SP1上運行的環境中重現,並且仍然未解決。我在http://forums.iis.net/t/1192310.aspx上爲這個問題在IIS論壇上開了一個新的例子,並且會在那裏跟蹤它。

想了解更多關於這個問題 - 你可以按照線程http://forums.iis.net/p/1149787/1917288.aspx

+1

中更新了新的調查結果我們遇到了同樣的錯誤,但在Windows 2008(不是R2)上。另外,我很困惑,你說「修復已經是Windows 2008 R2 SP1的一部分」,然後你聲明「不幸的是,問題仍然可以在SP1上運行的環境中重現。」 ? –

+0

你是否得到這個固定的?我遇到了非常類似的問題......在Windows 2008 R2 SP1上,問題仍然存在......在Windows 2008 R2上,我應用了此修補程序,並且一切正常。 –

相關問題