我能够在web.config中为maxJsonLength设置无限长度吗?

我正在使用jQuery的自动完成功能。 当我尝试检索超过17000条记录的列表(每条记录的长度不超过10个字符)时,它超出了长度,并引起错误: web

异常信息:
异常类型:InvalidOperationException
异常消息:使用JSON JavaScriptSerializer进行序列化或反序列化时出错。 字符串的长度超过了在maxJsonLength属性上设置的值。 json

我能够在web.configmaxJsonLength设置无限长度吗? 若是没有,我能够设置的最大长度是多少? 浏览器


#1楼

注意:此答案仅适用于Web服务,若是要从Controller方法返回JSON,请确保还阅读如下SO答案: https : //stackoverflow.com/a/7207539/1246870 服务器


MaxJsonLength属性不能是无限的,它是一个整数属性,默认为102400(100k)。 app

您能够在web.config上设置MaxJsonLength属性: ide

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

#2楼

您能够在web.config文件中配置json请求的最大长度: spa

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

maxJsonLength的默认值为102400 。 有关更多详细信息,请参见此MSDN页面: http : //msdn.microsoft.com/zh-cn/library/bb763183.aspx code


#3楼

问题其实是您是否真的须要返回17,000条记录? 您打算如何处理浏览器中的全部数据? 不管如何,用户不会滚动浏览17000行。 ip

更好的方法是仅检索“前几个”记录,并根据须要加载更多记录。 字符串


#4楼

彷佛没有“无限”值。 默认值为2097152个字符,至关于4 MB的Unicode字符串数据。

正如已经观察到的,在浏览器中很难很好地使用17,000条记录。 若是要提供聚合视图,则在服务器上进行聚合并仅在浏览器中传输摘要可能会更有效。 例如,考虑文件系统浏览器,咱们只看到树的顶部,而后在向下钻取时发出进一步的请求。 每一个请求中返回的记录数量相对较少。 树视图演示文稿能够很好地用于大型结果集。


#5楼

在MVC 4中,您能够执行如下操做:

protected override JsonResult Json(object data, string contentType, System.Text.Encoding contentEncoding, JsonRequestBehavior behavior)
{
    return new JsonResult()
    {
        Data = data,
        ContentType = contentType,
        ContentEncoding = contentEncoding,
        JsonRequestBehavior = behavior,
        MaxJsonLength = Int32.MaxValue
    };
}

在您的控制器中。

加成:

对于那些对您须要指定的参数感到困惑的人,呼叫可能看起来像这样:

Json(
    new {
        field1 = true,
        field2 = "value"
        },
    "application/json",
    Encoding.UTF8,
    JsonRequestBehavior.AllowGet
);
相关文章
相关标签/搜索