我能夠在web.config中爲maxJsonLength設置無限長度嗎?

我正在使用jQuery的自動完成功能。 當我嘗試檢索超過17000條記錄的列表(每條記錄的長度不超過10個字符)時,它超出了長度,並引起錯誤: web

異常信息:
異常類型:InvalidOperationException
異常消息:使用JSON JavaScriptSerializer進行序列化或反序列化時出錯。 字符串的長度超過了在maxJsonLength屬性上設置的值。 json

我能夠在web.configmaxJsonLength設置無限長度嗎? 若是沒有,我能夠設置的最大長度是多少? 瀏覽器


#1樓

注意:此答案僅適用於Web服務,若是要從Controller方法返回JSON,請確保還閱讀如下SO答案: https : //stackoverflow.com/a/7207539/1246870 服務器


MaxJsonLength屬性不能是無限的,它是一個整數屬性,默認爲102400(100k)。 app

您能夠在web.config上設置MaxJsonLength屬性: ide

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

#2樓

您能夠在web.config文件中配置json請求的最大長度: spa

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

maxJsonLength的默認值爲102400 。 有關更多詳細信息,請參見此MSDN頁面: http : //msdn.microsoft.com/zh-cn/library/bb763183.aspx code


#3樓

問題其實是您是否真的須要返回17,000條記錄? 您打算如何處理瀏覽器中的全部數據? 不管如何,用戶不會滾動瀏覽17000行。 ip

更好的方法是僅檢索「前幾個」記錄,並根據須要加載更多記錄。 字符串


#4樓

彷佛沒有「無限」值。 默認值爲2097152個字符,至關於4 MB的Unicode字符串數據。

正如已經觀察到的,在瀏覽器中很難很好地使用17,000條記錄。 若是要提供聚合視圖,則在服務器上進行聚合並僅在瀏覽器中傳輸摘要可能會更有效。 例如,考慮文件系統瀏覽器,咱們只看到樹的頂部,而後在向下鑽取時發出進一步的請求。 每一個請求中返回的記錄數量相對較少。 樹視圖演示文稿能夠很好地用於大型結果集。


#5樓

在MVC 4中,您能夠執行如下操做:

protected override JsonResult Json(object data, string contentType, System.Text.Encoding contentEncoding, JsonRequestBehavior behavior)
{
    return new JsonResult()
    {
        Data = data,
        ContentType = contentType,
        ContentEncoding = contentEncoding,
        JsonRequestBehavior = behavior,
        MaxJsonLength = Int32.MaxValue
    };
}

在您的控制器中。

加成:

對於那些對您須要指定的參數感到困惑的人,呼叫可能看起來像這樣:

Json(
    new {
        field1 = true,
        field2 = "value"
        },
    "application/json",
    Encoding.UTF8,
    JsonRequestBehavior.AllowGet
);
相關文章
相關標籤/搜索