czW*_*ter 3 c# json jsonserializer large-data asp.net-mvc-4
我写信给你网站上有错误:使用JSON JavaScriptSerializer进行序列化或反序列化时出错.字符串的长度超过maxJsonLength属性上设置的值.
使用的技术:C#,.NET FW 4.5,ASP.NET MVC4和Lint to SQL,Kendo UI(显示结果的网格).
我想返回(就Json而言)一大组数据 - 实际上我有50,000条记录(不会发生超过250,000条记录)
我尝试在web.config中放大maxJsonLength和将来启用压缩 - 同样的错误:
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="10485760"/>
</webServices>
<scriptResourceHandler enableCompression="true" enableCaching="true"/>
</scripting>
</system.web.extensions>
Run Code Online (Sandbox Code Playgroud)
接下来我尝试在C#类中重写return方法 - 同样的错误:a)默认
public JsonResult GetResult()
{
// execute query for get result
var myBigData = from ......
select new
{
.......
};
// return result
return this.Json(myBigData, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
为了消除错误,我尝试了较少数量的数据 - 一切都是正确的:测试哪个是正确的:1 - 10个6999个项目
最好的问候,彼得
注意:不幸的是,我经历了很多讨论(这里),但没有成功,所以我为任何重复的主题道歉.
这似乎从该值web.config将被忽略,并根据文件,你必须明确地创建一个实例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;
}
Run Code Online (Sandbox Code Playgroud)
至少它对我有用:)
| 归档时间: |
|
| 查看次数: |
3133 次 |
| 最近记录: |