我写信给您时网站出现错误:使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了 maxJsonLength 属性上设置的值。
用到的技术:C#、. NET FW 4.5、ASP.NET MVC4 和 Lint to SQL、Kendo UI(用于显示结果的网格)。
我想返回(以 Json 形式)大量数据——实际上我有 50,000 条记录(超过 250,000 条记录不会出现)
我尝试扩大 maxJsonLength 并在未来启用 web.config 中的压缩 - 出现同样的错误:
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="10485760"/>
</webServices>
<scriptResourceHandler enableCompression="true" enableCaching="true"/>
</scripting>
</system.web.extensions>
接下来我尝试在 C# 类中重写 return 方法 - 出现同样的错误: a) 默认
public JsonResult GetResult()
{
// execute query for get result
var myBigData = from ......
select new
{
.......
};
// return result
return this.Json(myBigData, JsonRequestBehavior.AllowGet);
}
b) 重写(还是报错)
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;
}
为了消除错误,我尝试了较少数量的数据——一切正常: 测试哪个是正确的:6999 项中的 1 - 10 项
最好的问候, 彼得
注意:不幸的是,我进行了很多讨论(此处),但没有成功,所以对于任何重复的主题,我深表歉意。
最佳答案
它seems来自 web.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;
}
至少对我有用:)
关于c# - 序列化或反序列化 JSON 期间的 ASP.NET MVC4 错误 - 大数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15304258/