Asp.net

超出 JavaScriptSerializer.MaxJsonLength。處理此問題的最佳做法是什麼?

  • October 3, 2019

我使用 jQuery 的 $.ajax() 函式將大量數據發送到客戶端。我在 ASP.NET Web 服務中呼叫一個返回 JSON 數據的方法。對於大多數搜尋來說,一切都很好,但是當我要返回一個大數據集時,我遇到了 JavaScriptSerializer MaxJsonLength 屬性的問題。處理此問題的最佳做法是什麼?我不想隨意設置最大長度。如果返回的數據大於目前最大值,我可以在 Web 服務中設置 MaxJsonLength,還是應該重新編寫數據並將數據塊發送到客戶端?

這是來自網路服務的相關片段:

Dictionary<string, object> jsonValuePairs = new Dictionary<string, object>();
//add some data to the dictionary...
return System.Web.Script.Serialization.JavaScriptSerializer.Serialize(jsonValuePairs);

為從客戶端腳本呼叫的 Web 方法設置最大長度的唯一方法是通過 web.config 文件(如下)。你設置這個有什麼問題?每次我都會通過多次 xhr 呼叫來流式傳輸部分數據。

<system.web.extensions>
 <scripting>
     <webServices>
       <jsonSerialization maxJsonLength="500000">
       </jsonSerialization>
     </webServices>
 </scripting>
</system.web.extensions>

更新:預設大小為 2097152,相當於 4 MB 的 Unicode 字元串數據。您真的要將這麼多數據發送回客戶端嗎?如果是這樣,您可能需要查看應用程序設計,因為使用者體驗會很慢而且很麻煩。

引用自:https://stackoverflow.com/questions/1045984