MVC中JSON字符长度超出限制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVC中JSON字符长度超出限制相关的知识,希望对你有一定的参考价值。

本文导读:在MVC中通过JsonResult返回JSON字符串时,如果字符串长度过长,会抛出使用 JSON javascriptSerializer 进行序列化或反序列化时出错,字符串的长度超过了为 maxJsonLength 属性设置的值,下面介绍其解决方法。

ASP.NET MVC中通过JsonResult返回JSON字符串时,当JSON字符串长度过长时,会报如下错误

异常详细信息: System.InvalidOperationException: 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值。

由于原来MVC框架内置的JsonResult代码中,在使用JavaScriptSerializer时,都是采用的默认值,没有从maxJsonLength读取值,即忽略了这个配置,所以通过修改 web.config ,设置 jsonSerialization节点maxJsonLength属性值是无效的

 

解决方法

 

1、新建一个控制器扩展类

 

C# 代码   复制
技术分享图片技术分享图片
namespace WEBMVC.Helpers
技术分享图片
{
技术分享图片    public static class ControllerExtensions
技术分享图片    {
技术分享图片        public static int MaxJsonLength{get;set;}
技术分享图片
技术分享图片        public static ControllerExtensions()
技术分享图片        {
技术分享图片            MaxJsonLength = 2147483644;
技术分享图片        }
技术分享图片
技术分享图片        public static System.Web.Mvc.JsonResult LargeJson(this System.Web.Mvc.Controller controlador, object data)
技术分享图片        {
技术分享图片            return new System.Web.Mvc.JsonResult()
技术分享图片            {
技术分享图片                Data = data,
技术分享图片                MaxJsonLength = MaxJsonLength,
技术分享图片            };
技术分享图片        }
技术分享图片        public static System.Web.Mvc.JsonResult LargeJson(this System.Web.Mvc.Controller controlador, object data, System.Web.Mvc.JsonRequestBehavior behavior)
技术分享图片        {
技术分享图片            return new System.Web.Mvc.JsonResult()
技术分享图片            {
技术分享图片                Data = data,
技术分享图片                JsonRequestBehavior = behavior,
技术分享图片                MaxJsonLength = MaxJsonLength
技术分享图片            };
技术分享图片        }
技术分享图片        //TODO: You can add more overloads, the controller class has 6 overloads
技术分享图片    }
技术分享图片}
技术分享图片

 

2、在需要返回大数据的控制器里面如下调用

 
 
C# 代码   复制
技术分享图片技术分享图片
using WEBMVC.Helpers;
技术分享图片技术分享图片
namespace WEBMVC.Controllers
技术分享图片
{
技术分享图片    public class VentasController : Controller
技术分享图片    {
技术分享图片        ControllerExtensions.MaxJsonLength = 1073741824;//1GB,如果需要单独设置长度,如果不需要,则不设置该值
技术分享图片
技术分享图片        public ActionResult VentasList (){
技术分享图片            //Todo: All the action code
技术分享图片
技术分享图片            return ControllerExtensions.LargeJson(myData);
技术分享图片        }
技术分享图片    }
技术分享图片}

以上是关于MVC中JSON字符长度超出限制的主要内容,如果未能解决你的问题,请参考以下文章

IDEA如何设置代码超出长度限制时自动换行

http不返回数据,是超出了nginx返回的长度限制?还是有其他原因?

mvc 下json超过限制,上传excel大小限制

如何限制 MVC 中文本框中的字符长度?

InvalidDataException:超出了多部分主体长度限制16384

字符串长度限制在.ne​​t core mvc的文本框中添加字符