JSON, ASP.NET MVC - MaxJsonLength exception
Here is another custom JsonResult
(CorrectJsonResult
) which handles larger serialization limits that the default 4MB allowed by JavascriptConverter
.
And another example which uses ContentResult
instead of JsonResult
subclass.
public ActionResult GetLargeJsonResult(){ return new ContentResult { Content = new JavaScriptSerializer { MaxJsonLength = Int32.MaxValue }.Serialize(myBigdata), ContentType = "application/json" };}
I have extended the base class Controller and work great:
ControllerExtensions class:
namespace SCAWEB.Helpers{ public static class ControllerExtensions { #region Json public static int MaxJsonLength{get;set;} static ControllerExtensions() { MaxJsonLength = 2147483644; } public static System.Web.Mvc.JsonResult LargeJson(this System.Web.Mvc.Controller controlador, object data) { return new System.Web.Mvc.JsonResult() { Data = data, MaxJsonLength = MaxJsonLength, }; } public static System.Web.Mvc.JsonResult LargeJson(this System.Web.Mvc.Controller controlador, object data, System.Web.Mvc.JsonRequestBehavior behavior) { return new System.Web.Mvc.JsonResult() { Data = data, JsonRequestBehavior = behavior, MaxJsonLength = MaxJsonLength }; } //TODO: You can add more overloads, the controller class has 6 overloads #endregion }}
MyController class:
using SCAWEB.Helpers;namespace SCAWEB.Controllers{ public class VentasController : Controller { public ActionResult VentasList (){ //Todo: All the action code //return this.Json(myData); return this.LargeJson(myData);//Here I use my extensions } }}
You can especify the max length in your code:
ControllerExtensions.MaxJsonLength = 1073741824;//1GB
See explaination and LargeJsonResult class at http://brianreiter.org/2011/01/03/custom-jsonresult-class-for-asp-net-mvc-to-avoid-maxjsonlength-exceeded-exception/