字符串的长度超过maxJsonLength属性上设置的值

我正在通过jQuery的ajax post方法通过web方法加载标签内容数据,大约有200-300条记录。 并在控制台中收到以下错误:

错误:Sys.Net.WebServiceFailedException:Sys.Net.WebServiceFailedException:System.InvalidOperationException–使用JSON JavaScriptSerializer进行序列化或反序列化时出错。 字符串的长度超过maxJsonLength属性上设置的值。

像这样在Web.config中更改maxJsonLength属性的长度没有帮助。

          

谁能帮我解决这个问题?

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(yourJsonString); 

这应该是完美的,我最近通过msdn解决了这个问题并解决了一个长期困扰我的问题。

我知道这是我阅读时的一个非常老的线程,并且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 }; } 

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

理想情况下,ajax方案仅适用于中小型服务器端调用,而不是用于获取大量数据,如果您使用异步请求获取大量数据,那么您就会遇到麻烦。

请看这里的替代方案