• 关于大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 <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()

    复制代码
    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
                };
    }
    复制代码
    再牛逼的梦想,也抵不住我傻逼似的坚持!别在该奋斗的年纪,贪图安逸。 今天多学一些知识,明天开发的速度就更快一下。后天你就会变得更好。
  • 相关阅读:
    第七届河南省赛F.Turing equation(模拟)
    第八届acm省赛 A挑战密室(模拟)
    展开字符串(dfs)
    排名(水题)
    Identity Card(水题)
    Dropping Balls (二叉树+思维)
    SQL学习——IN运算符
    SQL学习——BETWEEN运算符
    SQL学习——LIKE运算符
    【数字图像处理】灰度转换算法
  • 原文地址:https://www.cnblogs.com/LowKeyCXY/p/11060063.html
Copyright © 2020-2023  润新知