我是靠谱客的博主 传统御姐,这篇文章主要介绍关于大JSON 的问题的解决方式ASP.NET MVC JSON 大数据异常提示JSON 字符串超出限制的异常问题,现在分享给大家,希望可以做个参考。

ASP.NET MVC JSON 大数据异常提示JSON 字符串超出限制的异常问题

今天客户突然过来找我说在后台添加了一篇超长的文章后,所有后台的文章都显示不出来了。后台的前端显示是用easyui的,返回的数据全是用json。根据客户的描述进行了同样的操作后,在firebug下发现ajax返回的异常 “序列化或JSON的JavaScriptSerializer过程中出现错误。字符串的长度超过上maxJsonLength属性设置的值”

这个异常是在执行MVC中的JsonResult的时抛出的,根据异常 的Message得知是序列化的字符串超出了maxJsonLength的限制。并得知这个属性是由JavaScriptSerializer提供的,因 为MVC内置的JsonResult是用JavaScriptSerializer进行序列化的。在网上快速搜索了一下,碰到这个问题的不少,大部分 推荐的解决的方法都是在web.config中加入以下配置,设置maxJsonLength的长度即

复制代码
复制代码
1
2
3
4
5
6
7
1 <system.web.extensions> 2 <scripting> 3 <webServices> 4 <jsonSerialization maxJsonLength="102400"/> 5 </webServices> 6 </scripting> 7 </system.web.extensions>
复制代码

然后根据需要改变maxJsonLength的大小

运行正常,但是问题依旧还在,而且不管maxJsonLength设置成多大都无效

没办法,只能继续搜索查找资料了。

原来MVC框架内置的JsonResult代码中,在使用JavaScriptSerializer时,都是采用的默认值,没有从maxJsonLength读取值,即忽略了这个配置。

最后在stackoverflow上找到了答案

在控制器中添加两个JsonResult,然后在需要返回大数据json的action调用,即用return LargeJson()代替return Json()

复制代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public JsonResult LargeJson(object data) { return new System.Web.Mvc.JsonResult() { Data = data, MaxJsonLength = Int32.MaxValue, }; } public JsonResult LargeJson(object data,JsonRequestBehavior behavior) { return new System.Web.Mvc.JsonResult() { Data = data, JsonRequestBehavior = behavior, MaxJsonLength = Int32.MaxValue }; }
复制代码

转载于:https://www.cnblogs.com/LowKeyCXY/p/11060063.html

最后

以上就是传统御姐最近收集整理的关于关于大JSON 的问题的解决方式ASP.NET MVC JSON 大数据异常提示JSON 字符串超出限制的异常问题的全部内容,更多相关关于大JSON内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部