MVC中JSON字符长度超出限制的异常处理

异常信息如下:

使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值。
这个异常是在执行MVC中的JsonResult的时抛出的,根据异常的Message得知是序列化的字符串超出了maxJsonLength的限制。并得知这个属性是由JavaScriptSerializer提供的,因为MVC内置的JsonResult是用JavaScriptSerializer进行序列化的。
单纯在web.config中加入下列配置节无效:
<system.web.extensions><scripting><webServices><jsonSerialization maxJsonLength="20971520"/></webServices></scripting>
</system.web.extensions>

 

还必须重写JsonResult这个类:

ConfigurableJsonResult public class ConfigurableJsonResult : JsonResult{public override void ExecuteResult(ControllerContext context){if (context == null){throw new ArgumentNullException("context");}if (JsonRequestBehavior == JsonRequestBehavior.DenyGet &&String.Equals(context.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase)){throw new InvalidOperationException("This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request. To allow GET requests, set JsonRequestBehavior to AllowGet.");}HttpResponseBase response = context.HttpContext.Response;if (!String.IsNullOrEmpty(ContentType)){response.ContentType = ContentType;}else{response.ContentType = "application/json";}if (ContentEncoding != null){response.ContentEncoding = ContentEncoding;}if (Data != null){JavaScriptSerializer serializer = new JavaScriptSerializer();ScriptingJsonSerializationSection section = ConfigurationManager.GetSection("system.web.extensions/scripting/webServices/jsonSerialization") as ScriptingJsonSerializationSection;if (section != null){serializer.MaxJsonLength = section.MaxJsonLength;serializer.RecursionLimit = section.RecursionLimit;}response.Write(serializer.Serialize(Data));}}}

 

 

测试后可以正常使用。

 

参考:

http://www.cnblogs.com/shenba/archive/2012/02/03/2337050.html

http://weblogs.asp.net/rashid/archive/2009/03/23/submitting-my-first-bug-after-asp-net-mvc-1-0-rtm-release.aspx

转载于:https://www.cnblogs.com/sherlock99/p/3659759.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432711.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cookie 百科_cookie是什么

很多朋友并不了解cookie是什么&#xff0c;Cookie&#xff0c;有时也用其复数形式 Cookies&#xff0c;指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于 RFC2109 和 2965 中的都已废弃&#xff0c;最新取代的规范是 RFC6265…

pppd 源码修改1

1. pppd拨号成功后&#xff0c;会将解析到的dns服务器IP地址&#xff0c;写入/etc/ppp/resolv.conf 这样的话&#xff0c;gethostbyname_r并不会识别&#xff0c;并且&#xff0c;如果有启动两路pppd的话&#xff0c;后面一路会将resolv.conf文件重写。 因此&#xff0c;这块代…

学校计算机专业春联大全带横批,对联大全带横批_春节对联大全_新年春联合集...

上联&#xff1a;旧岁又添几个喜 下联&#xff1a;新年更上一层楼 横批&#xff1a;辞旧迎新上联&#xff1a;绿竹别其三分景 下联&#xff1a;红梅正报万家春 横批&#xff1a;春回大地上联&#xff1a;民安国泰逢盛世 下联&#xff1a;风调雨顺颂华年 横批&#xff1a;民泰国…

2014腾讯实习生招聘软件开发类附加题

附加题&#xff1a; 31. 一个珠宝商甲要鉴定41克以下的宝石&#xff08;40克及以下的任意重量&#xff09;&#xff0c;商甲只带一个天平和四个砝码&#xff0c;请问带哪四个砝码&#xff1f; 32. 一道有关utf-8编码的题。给了个例子&#xff1a;“我”的Unicode码是xxxx, 其ut…

location.href属于重定向还是转发_servlet2 单元测试、转发、重定向

解决服务端接收数据乱码问题。服务器默认采用 ISO8859-1 编码响应内容。// 1req.setCharacterEncoding("utf-8");// 2 byte[] bytes req.getParameter("username").getBytes("iso-8859-1"); System.out.println("username:" n…

如何在CSDN博客中的所贴的代码进行【代码块】显示

笔者最近很喜欢在csdn发一些技术博客&#xff0c;可是看了别人的博客&#xff0c;有代码的地方总是可以显示出代码块&#xff0c;而自己贴上去的代码总是没有。刚开始还以为CSDN博客里面的编辑功能有&#xff0c;可是找来找去都没有找到。后来才发现原来需要自己在源码上进行修…

学安全工程用不用计算机,上重点大学的末流专业,不如上普通大学的重点专业,你赞成吗?...

上重点大学的末流专业&#xff0c;不如上普通大学的重点专业&#xff0c;你赞成吗&#xff1f;首先&#xff0c;我对这个说法不赞成&#xff0c;这个说法是错误的。可以说&#xff1a;基本上说的是对的也是错的。说对的&#xff0c;是这个思路是对的&#xff0c;说错&#xff0…

ORACLE复杂查询之连接查询

一、传统的连接查询 1、交叉连接&#xff1a;返回笛卡尔积 WHERE中限定查询条件&#xff0c;可以预先过滤掉掉不符合条件的记录&#xff0c;返回的只是两个表中剩余记录&#xff08;符合条件的记录&#xff09;的笛卡尔积。 2、内连接&#xff1a;参与连接的表地位平等&#xf…

12306加密传输_三大运营商发5G消息白皮书:短消息服务升级,支持加密传输

4月8日&#xff0c;中国电信、中国移动、中国联通联合举行线上发布会&#xff0c;共同发布《5G消息白皮书》。《白皮书》阐述了5G消息的核心理念&#xff0c;明确了相关业务功能及技术需求&#xff0c;提出了对5G消息生态建设的若干构想。据介绍&#xff0c;5G消息业务是终端原…

winpe修复计算机无法启动,用winpe来修复无法进入系统的问题

很多网友都碰到过有的时候无法进入系统&#xff1f;不知道该怎么操作&#xff0c;U大师告诉你一个方法&#xff1a;那就是用winpe来修复无法进入系统的问题,可以先在硬盘上安装一个PE维护系统&#xff0c;重启电脑时在多重启动菜单选择Windows PE&#xff0c;系统便会自动进入P…

详细解说 STL 排序(Sort)

0 前言: STL&#xff0c;为什么你必须掌握 对于程序员来说&#xff0c;数据结构是必修的一门课。从查找到排序&#xff0c;从链表到二叉树&#xff0c;几乎所有的算法和原理都需要理解&#xff0c;理解不了也要死记硬背下来。幸运的是这些理论都已经比较成熟&#xff0c;算法也…

停止和删除Hasplms服务(二)--HASP运行环境

这一篇文章继续上一篇“停止和删除Hasplms服务&#xff08;一&#xff09;”讨论HASP运行环境的安装和卸载&#xff0c;这里的内容对软件的发行者有参考价值&#xff0c;普通用户也可以用这里的方法管理HASP加密锁。 首先到Sentinel官网下载HASP运行环境管理工具 http://sentin…

ad9生成坐标文件_GROMACS各种文件格式介绍

CPT文件&#xff1a;该文件为模拟断点文件(check point&#xff0c;.cpt)。该文件为模拟过程固定时间间隔产生&#xff0c;保存模拟系统所有信息。该文件一部分可以在能量文件(.edr)找到&#xff0c;一部分可以在双精度轨迹文件(.trr)中找到。如果模拟因为外界条件中断&#xf…

广东计算机电子学校,广东省电子职业技术学校

开设6大专业类别&#xff0c;十九个专业方向&#xff0c;其中电子技术应用是全国首批示范专业和省重点建设专业&#xff0c;计算机及应用是省重点建设专业。广东省电子职业技术学校创建于1974年&#xff0c;主管部门是广东省教育厅&#xff0c;是我省创办最早的电子信息(IT)类省…

getline()函数详解

学习C的同学可能都会遇到一个getline()函数&#xff0c;譬如在Cpremer中&#xff0c;标准string类型第二小节就是“用getline读取整行文本”。书上给的程序如下&#xff1a;int main(){string line:while(getline(cin,line))cout<<line<<endl;return 0;}大家会发现…

android 获取和设置屏幕亮度

/**获取屏幕亮度 / public static int getScreenBrightness(Activity activity){ int value 0; ContentResolver cr activity.getContentResolver(); try{ value Settings.System.getInt(cr,Settings.System.SCREEN_BRIGHTNESS); }catch(SettingNotFoundException e){ } ret…

为什么不能睁一只眼闭一只眼_自媒体人上哪里找非常多的原创短视频素材?我为什么一定要你做原创?...

现在短视频非常火&#xff0c;很多人都想拍摄3-5分钟的视频&#xff0c;因为各个平台对于视频的收益补贴简直太大了&#xff0c;比文章大多了&#xff0c;目的就是为了让大家多去创作视频。但是创作视频真的不容易&#xff0c;于是很多人就是想起了搬运&#xff0c;把某个人在A…

计算机控制的点火系统由,第八节(点火系统)

1、点火系统作用(1)将蓄电池电压12V&#xff0c;转换成点火系统需要极高的电压,并分配到各缸。(2)适时地点燃发动机气缸内的空气和燃油的混合气体。相关阅读&#xff1a;浅谈汽车电子稳定程序系统(ESP)驱动的革命 本田SH-AWD四轮驱动详解看丰田专家如何解释发动机转速升高2、对…

搭建Windows Embedded Compact 7开发环境

大家期盼已久的WindowsEmbedded Compact 7是微软2010年发布的第七代嵌入式操作系统&#xff01;微软可谓对它寄予很大的希望&#xff0c;所以连名字都改了。以下就简称WEC7吧。WEC7 的最大亮点就是引入了Silverlight 使用Expression blend 3 作为UI的首选开发&#xff0c;当然这…

volatile关键字的使用

volatile变量直接在CPU和内存之间交换&#xff0c;不通过一级、二级缓存。考虑下面的代码&#xff1a;代码&#xff1a;123456789101112131415161718class Gadget{public:void Wait() {while (!flag_){Sleep&#xff08;1000); // sleeps for 1000 milliseconds}}void Wakeup()…