我可以在web.config中为maxJsonLength设置一个无限的长度吗?

 2023-02-17    446  

问题描述

我正在使用jquery的自动完成功能.当我尝试检索越多的记录(每个记录的列表)时,它超出了长度并抛出了错误:

例外信息:
异常类型:InvalidOperationExceptionbr
异常消息:使用JSON JavaScriptSerializer序列化或反序列化期间出错.字符串的长度超出了maxjsonlength属性上设置的值.

我可以在web.config中为maxJsonLength设置一个无限的长度吗?

我可以在web.config中为maxJsonLength设置无限的长度吗?如果没有,我可以设置的最大长度是多少?

推荐答案

注意:此答案仅适用于Web服务,如果您从控制器方法返回JSON,请确保您读到此答案以下: https://stackoverflow.com/a/7207539//7207539//7207539//7207539//7207539//7207539//7207539//7207539//7207539//7207539//7207539/1246870


maxjsonlength 属性无法无限制,是默认为102400(100k)的整数属性.

您可以在web.config上设置MaxJsonLength属性:

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

其他推荐答案

如果您使用的是mvc 4 ,请务必查看 此答案 也是如此.


如果您仍然收到错误:

  • 将maxJsonLength属性设置为Web.config
  • 中的最大值后

  • ,您知道您的数据的长度小于此值
  • ,您不利用Web服务方法为JavaScript序列化

您的问题很可能是:

maxjsonlength属性的值仅适用于异步通信层以调用Web服务方法使用的内部JavaScriptSerializer实例. ( msdn:scriptingjsonserialization.maxjsonlength属性)

基本上,”内部”JavaScriptSerializer从Web方法调用时尊重maxJsonLength的值;直接使用JavaScriptSerializer(或通过MVC Action-Method/Controller使用)是不是尊重maxJsonLength属性,至少不是web.config的systemWebExtensions.scripting.webServices.jsonSerialization部分.特别是, Controller.Json() 方法不尊重配置设置!

作为解决方法,您可以在您的控制器(或任何地方)中执行以下操作:

var serializer = new JavaScriptSerializer();

// For simplicity just use Int32's max value.
// You could always read the value from the config section mentioned above.
serializer.MaxJsonLength = Int32.MaxValue;

var resultData = new { Value = "foo", Text = "var" };
var result = new ContentResult{
    Content = serializer.Serialize(resultData),
    ContentType = "application/json"
};
return result;

这个答案是我对这个ASP.NET论坛答案.

其他推荐答案

在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
);

以上所述是小编给大家介绍的我可以在web.config中为maxJsonLength设置一个无限的长度吗?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/34168.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。