字符串的长度超过上maxJsonLength属性设置的值(The length of the str

2019-06-26 21:30发布

我通过jQuery的加载选项卡的内容数据ajax POST方法通过Web法200-300记录。 并获得在控制台下面的错误:

错误:Sys.Net.WebServiceFailedException:Sys.Net.WebServiceFailedException:使用JSON JavaScriptSerializer序列化和反序列化期间System.InvalidOperationException--错误。 字符串的长度超过上maxJsonLength属性设置的值。

更改的长度maxJsonLength在这样的Web.config属性不会帮助。

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

谁能帮我解决这个问题?

Answer 1:

JavaScriptSerialzer有一个名为公共财产MaxJsonLength根据

http://msdn.microsoft.com/en-us/library/system.web.configuration.scriptingjsonserializationsection.maxjsonlength.aspx

现在,你在哪里你的反序列化JSON,使用此

JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = Int32.MaxValue; //Or any size you want to use, basically int maxValue is 2GB, you shouldn't need this big json string to deserialize, else you are doing it wrong.
myObject obj = serializer.Deserialize<myObject>(yourJsonString);

这应该很好地工作,我最近通过MSDN想通了这一点,并解决了被窃听我长的问题。



Answer 2:

我知道这是在我读的时候一个非常古老的线程,那的WebMethod是不是真的在ASP.NET MVC的事情,所以这是有点切线。 但是,如果有人通过它运行 -

如果您使用ASP.NET MVC有一个替代调用JavaScriptSerializer直接,这是初始化JsonResult ,并设置MaxJsonLength的结果本身属性:

    private JsonResult GetReallyBigJsonResult(object data, JsonRequestBehavior requestBehavior)
    {
            return new JsonResult()
            {
                ContentEncoding = Encoding.Default,
                ContentType = "application/json",
                Data = data,
                JsonRequestBehavior = requestBehavior,
                MaxJsonLength = int.MaxValue
            };

    }


Answer 3:

不知道你的字符串的大小,但或许它仍然超过您设置的最大限制?

理想的情况是AJAX方案意味着只适用于中小企业的服务器端调用不获取大量数据的,如果你使用的是异步请求,则获得了大量的数据,你是在自找麻烦。

见这里的替代



文章来源: The length of the string exceeds the value set on the maxJsonLength property