2013-03-08 157 views
3

我寫信給您,網站中有錯誤:使用JSON JavaScriptSerializer進行序列化或反序列化時出錯。字符串的長度超過maxJsonLength屬性中設置的值。ASP.NET MVC4在序列化或反序列化期間出錯JSON - 大數據

使用的技術:C#,. NET FW 4.5,ASP.NET MVC4和Lint to SQL,Kendo UI(顯示結果網格)。

我想回(以JSON而言)一大組數據 - 其實我有50,000條記錄(超過25萬條記錄就不會發生)

我試着放大maxJsonLength和將來啓用網絡壓縮。配置 - 具有相同的錯誤:

<system.web.extensions> 
    <scripting> 
     <webServices> 
     <jsonSerialization maxJsonLength="10485760"/> 
     </webServices> 
     <scriptResourceHandler enableCompression="true" enableCaching="true"/> 
    </scripting> 
    </system.web.extensions> 

接下來,我嘗試在C#類重寫回歸方法 - 用同樣的錯誤: 一)默認

public JsonResult GetResult() 
{ 
    // execute query for get result 
    var myBigData = from ...... 
     select new 
     { 
      ....... 
     }; 

    // return result 
    return this.Json(myBigData, JsonRequestBehavior.AllowGet); 
} 

B)rewriten(仍然錯誤)

public JsonResult GetResult() 
{ 
    // execute query for get result 
    var myBigData = from ...... 
     select new 
     { 
      ....... 
     }; 

    // return result 
    var jsonResult = Json(myBigData, JsonRequestBehavior.AllowGet); 
    jsonResult.MaxJsonLength = int.MaxValue; 
    return jsonResult; 
} 

要消除錯誤,我想數據的數量較少 - 所有是正確的: 測試這是正確的:1 - 10 6999項

最好的問候, 彼得

注意:不幸的是,我經歷了很多討論(這裏),但沒有成功,所以我很抱歉任何重複的話題。

回答

5

seemsweb.config該值將被忽略,並根據documentation你必須明確地創建JavascriptSerializer

public ContentResult GetResult() 
{ 
    var serializer = new JavaScriptSerializer(); 
    serializer.MaxJsonLength = Int32.MaxValue; 
    var result = new ContentResult(); 
    result.Content = serializer.Serialize(data); 
    result.ContentType = "text/json"; 
    return result; 
} 

一個實例,至少它爲我工作:)

+0

我剛剛找到了更好[解決](http://stackoverflow.com/questions/9943727/jsonmaxlength-exception-on-deserializing-large-json-objects) – user20140268 2013-03-08 23:06:17

+0

謝謝你的幫助,現在一切正常。 – czWolfHunter 2013-03-09 13:10:33