Question

I am writing to you with an error in website: Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property.

Used technologies: C #,. NET FW 4.5, ASP.NET MVC4 and Lint to SQL, Kendo UI (grid for show result).

I would like to return (in terms of Json) a large set of data - actually I have 50,000 records (more than 250,000 records would not occur)

I try enlarge maxJsonLength and future enable compression in web.config - with same error:

  <system.web.extensions>
    <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="10485760"/>
      </webServices>
      <scriptResourceHandler enableCompression="true" enableCaching="true"/>
    </scripting>
  </system.web.extensions>

Next I try rewrite return method in C# class - with same error: a) default

public JsonResult GetResult()
{
  // execute query for get result
  var myBigData = from ......
      select new
      {
          .......
      };

  // return result
  return this.Json(myBigData, JsonRequestBehavior.AllowGet);
}

b) rewriten (still error)

public JsonResult GetResult()
{
  // execute query for get result
  var myBigData = from ......
      select new
      {
          .......
      };

  // return result
  var jsonResult = Json(myBigData, JsonRequestBehavior.AllowGet);
  jsonResult.MaxJsonLength = int.MaxValue;
  return jsonResult;
}

To eliminate the mistakes I tried a smaller number of data - all is right: Test which is correct: 1 - 10 of 6999 items

Best regards, Peter

Note: Unfortunately, I went through a lot of discussion (here), but without success, so I apologize for any duplicate topic.

Était-ce utile?

La solution

It seems that value from web.config is ignored, and according to documentation you have to explicitly create an instance of JavascriptSerializer

public ContentResult GetResult() 
{
    var serializer = new JavaScriptSerializer();
    serializer.MaxJsonLength = Int32.MaxValue;
    var result = new ContentResult();
    result.Content = serializer.Serialize(data);
    result.ContentType = "text/json";
    return result;
}

At least it works for me :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top