JSON, ASP.NET MVC - MaxJsonLength exception

前端 未结 4 1933
时光取名叫无心
时光取名叫无心 2021-01-18 05:25

I am just trying to shift some comma separated numbers to the frontend:

[AcceptVerbs(HttpVerbs.Get)]
public JsonResult GetSquares()
{
 var result = new JsonR         


        
相关标签:
4条回答
  • 2021-01-18 05:55

    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
    
    0 讨论(0)
  • 2021-01-18 06:02

    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"
      };
    }
    
    0 讨论(0)
  • 2021-01-18 06:03

    This won't work?

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

    If not maybe you can just pass it back as a string...

    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult GetSquares()
    {
        IList<double> list = new List<double>();
        ....
        return Content(string.Join(",", list));
    }
    
    0 讨论(0)
  • 2021-01-18 06:08

    See explaination and LargeJsonResult class at http://brianreiter.org/2011/01/03/custom-jsonresult-class-for-asp-net-mvc-to-avoid-maxjsonlength-exceeded-exception/

    0 讨论(0)
提交回复
热议问题