2013-03-08 154 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