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

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

 <system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="102400"/>
</webServices>
</scripting>
</system.web.extensions>

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

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

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

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

最后在stackoverflow上找到了答案

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

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
};
}

具体网址:http://stackoverflow.com/questions/4155014/json-asp-net-mvc-maxjsonlength-exception

说道这里不得不感叹一下

很多技术问题,百度出来的结果实在没有人家国外的牛,以后遇到的技术问题还是google点

asp.net mvc 4 json大数据异常 提示JSON字符长度超出限制的异常的更多相关文章

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

    解决MVC中JSON字符长度超出限制的异常 解决方法如下: <configuration> <system.web.extensions> <scripting> ...

  2. ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目

    ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)   我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为 ...

  3. asp.net MVC 框架中控制器里使用Newtonsoft.Json对前端传过来的字符串进行解析

    下面我用一个实例来和大家分享一下我的经验,asp.net MVC 框架中控制器里使用Newtonsoft.Json对前端传过来的字符串进行解析. using Newtonsoft.Json; usin ...

  4. 【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  5. ASP.NET MVC动态加载数据

    ASP.NET MVC动态加载数据,一般的做法是使用$.each方法来循环产生tabel: 你可以在html时先写下非动态的部分:  Source Code 上图中,有一行代码: <tbody ...

  6. Atitit. BigConfirmTips 控件 大数据量提示确认控件的原理and总结O9

    Atitit. BigConfirmTips 控件 大数据量提示确认控件的原理and总结O9 1. 主要的涉及的技术 1 2. 主要的流程 1 3. 调用法new confirmO9t(); 1 4. ...

  7. ASP.NET MVC导出excel(数据量大,非常耗时的,异步导出)

    要在ASP.NET MVC站点上做excel导出功能,但是要导出的excel文件比较大,有几十M,所以导出比较费时,为了不影响对界面的其它操作,我就采用异步的方式,后台开辟一个线程将excel导出到指 ...

  8. 这算是ASP.NET MVC的一个大BUG吗?

    这是昨天一个同事遇到的问题,我觉得这是一个蛮大的问题,而且不像是ASP.NET MVC的设计者有意为之,换言之,这可能是ASP.NET MVC的一个Bug(不过也有可能是保持原始请求数据而作的妥协). ...

  9. 在asp.net mvc中上传大文件

    在asp.net mvc 页面里上传大文件到服务器端,需要如下步骤: 1. 在Control类里添加get 和 post 方法 // get method public ActionResult Up ...

随机推荐

  1. 图片上传代码(C#)

    //上传 protected void Button1_Click(object sender, EventArgs e)        {            if (FileUpload1.Ha ...

  2. 我爱免费之FreeFileSync文件夹同步软件

    因为项目需求用到FreeFileSync文件夹同步软件,这个软件好在免费.易用.功能强,我真的是大爱这种软件.http://freefilesync.com/ 可以下载免费软件,有需要的朋友,大可以一 ...

  3. android开发(49) android 使用 CollapsingToolbarLayout ,可折叠的顶部导航栏

    概述 在很app上都见过 可折叠的顶部导航栏效果.google support v7  提供了 CollapsingToolbarLayout 可以实现这个效果.效果图如下:    实现步骤 1. 写 ...

  4. C代码中如何调用C++ C++中如何调用C

    注意这里的C调用C++或者C++调用C意思是.c文件中调用.cpp文件中代码,或者相反. 集成开发环境如VC++6.0或者vs都是以文件后缀来区别当前要编译的是C代码还是C++代码,然后采用响应的编译 ...

  5. 使用最新的“huihui中文语音库”实现文本转语音功能

    最近一个web项目中,需要进行语音播报,将动态的文字转换为语音(TTS)存为WAV文件后通过web播放给用户.选择了微软所提供的SAPI (The Microsoft Speech API),只需要几 ...

  6. HttpListenerCS客户端监听http

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  7. 【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(转)

    原文链接:[MongoDB]windows平台搭建Mongo数据库复制集(类似集群)(一) Replica  Sets(复制集)是在mongodDB1.6版本开始新增的功能,它可以实现故障自动切换和自 ...

  8. SQL数据类型解释

    SQL数据类型解释 1.char.varchar.text.ntext.bigint.int.smallint.tinyint和bit的区别及数据库的数据类型电脑秘籍 2009-05-15 21:47 ...

  9. 没有找到cxcore100.dll,因此这个应用程序未能启动,重新安装应用程序可能会修复此问题

    第一种情况: 出现这个问题多数是因为“环境变量PATH”未设置,虽然你可能在安装的过程中勾选了Add <...>\OpenCV\bin to the system PATH项!安装Open ...

  10. CentOS6部署VNC服务端

    VNC (Virtual Network Computer)是虚拟网络计算机的缩写.VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Wi ...