zoukankan      html  css  js  c++  java
  • .net 使用Json(),maxJsonLength属性设置的值问题

    http://www.cnblogs.com/ericli-ericli/p/5615644.html 

    “使用JSON JavaScriptSerializer进行序列化或反序列化时出错。字符串的长度超过了为maxJsonLength属性设置的值”

    今天业务找我说线上的国家地区都显示数字(地区ID),而不显示地区名字。

    当时我觉得不太可能啊,虽然控件很老,已经替换了,还没到发布日期,但是线上的代码绝对没问题啊。

    等我去看页面,才懵逼了,真的有问题,但是线上master的代码在本地附加到进程完全OK.

    猜想:

    1、线上JS文件有改动;

    2、配置文件有改动

    然后开始查看Git记录发现今天并没有上传记录。查看线上日志,发现一个奇怪的异常:上面加粗的那行。

    然后就开始觉得应该是代码出问题了。

    问了下度娘,看到大多数这种问题的解决办法:

    在web.config的节点下添加:

    复制代码
    <system.web.extensions>
        <scripting>
            <webServices>
                <jsonSerialization maxJsonLength="1024000000" />
            </webServices>
        </scripting>
    </system.web.extensions>
    复制代码

    这样用来增加maxJsonLength的长度值。

    结合自己的项目,原来的老控件,不是分页加载地区而是拿全量(前几任开发挖的坑),平时一直采用MVC的Json()将数据序列化成json格式,昨天突然增加了几个城市的信息,数据量增加到了49000多,取整个数据是,就撑破了

    maxJsonLength的默认值(网上有说是4M,有说是2M)。悲催的小编顺带着将没过QA的分页加载的控件也一并上传了,还好没出问题。


    问题解决了,但是小编还是觉得其中有疑问,就查询了更多帖子,发现一种更加完美的方式:

    复制代码
    public ActionResult GetLargeJsonResult()
    {
      return new ContentResult
        {
            Content = new JavaScriptSerializer { MaxJsonLength = Int32.MaxValue }.Serialize(listResult),
            ContentType = "application/json"
        };
    }
    复制代码

    另外,发现一个讲解更加透彻的帖子,附上地址:http://www.cnblogs.com/artech/archive/2012/08/15/action-result-03.html

    分类: .NET
     
     
     
  • 相关阅读:
    web前端面试题
    Delphi控制摄像头
    表达式计算
    web services基础知识二
    soap和web services
    IdTCPClient和IdTCPServer主要属性
    工控控件组iocomp的iplot控件的使用
    编译开关
    delphi web services控件组
    將FastReport存入數據庫,讀出并更新
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/10737042.html
Copyright © 2011-2022 走看看