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);
        }
    }
}
时间: 2024-11-05 16:16:11

MVC中JSON字符长度超出限制的相关文章

解决MVC中JSON字符长度超出限制的异常

解决MVC中JSON字符长度超出限制的异常 解决方法如下: http://stackoverflow.com/questions/4155014/json-asp-net-mvc-maxjsonlength-exception 解决MVC中JSON字符长度超出限制的异常,布布扣,bubuko.com

解决JSON字符长度超出限制

环境asp.net  4.0  ,AJAX 一般处理程序 碰到JSON字符长度超出限制,抛出异常,参考了网上资料和网友博客 web.config添加以下内容 <system.web.extensions> <scripting> <webServices> <jsonSerialization maxJsonLength="20971520"/> </webServices> </scripting> </s

asp.net mvc 4 json大数据异常 提示JSON字符长度超出限制的异常

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

关于 mvc 中 连字符 - 和下划线 _转换的问题。

[潜水]大崔||哈尔滨(759666247) 10:02:16 如图   C#不承认 "-"[知府]古道今-湖北\xig<[email protected]> 10:03:54 这个无解[潜水]大崔||哈尔滨(759666247) 10:04:03 [知府]古道今-湖北\xig<[email protected]> 10:04:03 除非你用html代码[知府]古道今-湖北\xig<[email protected]> 10:04:09 不然不支持[

.net mvc中json的时间格式

.net mvc中,通过return Json(DateTime.Now); 返回到视图时,日期格式变成这样,"/Date(1245398693390)/",如果要显示指定的日期时间格式,例如想C#中,DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); var date = new Date(parseInt("/Date(1317830400000)/".replace(/\/Date(−?\d+)\//

mysql中length字符长度函数使用方法

在mysql中length是计算字段的长度一个汉字是算三个字符,一个数字或字母算一个字符了,与char_length是有一点区别,本文章重点介绍第一个函数. mysql里面的length函数是一个用来获取字符串长度的内置函数.具体用法示例如下: (1)查看某字符串的长度(比如本站网址) SELECT LENGTH('www.111cn.Net'); (2)查询文章表(article)中标题最长的10篇文章 SELECT id,title FROM article ORDER BY LENGTH(

MVC中Json的使用:Controller中Json的处理

一.当查询得到的数据符合前台要求,不需要做任何处理,直接DataList To Json 返回前台. 代码: 1 var allEntities = service.QueryByPage(this.GetSearchFilter(searchModel), "InsertedDateUtc Descending", pageSize, searchModel.PageIndex + 1, out recordCount); 2 return Json(allEntities, Jso

c# MVC中 @Styles.Render索引超出下标

@Styles.Render( "~/Content/bootstrap/css", "~/Content/mycss") 提示索引超出下标 后来发现市bootstrap.css文件的问题,当升级bootstrap3.3版本后,就出现了这个问题. 如果将bootstrap文件单独出来,使用html中link方式引用就可以. 后来在网上找到解决方案: WebGrease引起的,需要nuget更新一下WebGrease. 我将WebGrease更新到1.6版本就解决了

span标签中显示固定长度,超出部分用省略号代替,光标放到文字上显示全部

在span中实现显示某段内容,固定其长度,多余部分用省略号代替,这样就用到html的title属性: 如:<span title="value"></span> title属性:其值是text,属性描述是规定元素的工具提示文本,意思就是鼠标移到元素上时显示title中的内容: 以span为例实现上述功能: html: <div> <span class="basic-l left10">筛选标签:</span&g