Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
526 views
in Technique[技术] by (71.8m points)

asp.net mvc 4 - JSON data size limit

In HighChart I needs to plot a series of data against x and y axis. HighChart expects the data to be in json format. ie, [ [ x, y],[x, y]……[x, y] ]. Where x and y are time ( 1392345000 – Unix epoch format ) and value ( 49.322 ). So I am making an ajax call to get the data and on success I render the json returned data in highchart. In most of the time ie, if the count of data( [x,y] ) is below 87500 rows than Json returns the data from controller to view. But when the data exceeds 87500 the ajax error is called with 404, not found error. Is there any size restriction for json returned data.

Section-1 – Controller Class

public JsonResult GetPlotData(Dictionary<string, List<ChartData>> dataPlot)
{

    // dataPlot = D00213 - [[13245678000,49.9],[13245345000,43.9]...[n,n]]
    // if dataPlot.Count < 87500 here throwing error and in ajax error 404 Not found
    return Json(dataPlot, JsonRequestBehavior.AllowGet);

}

Section-2 – Ajax

 $.ajax(
    {
          url: '../Report/GetPlotData',
          data: { "fromDate": fromDate, "toDate":toDate, "item": items[i].id }, 
          type: "POST",
          dataType: "json",
          cache: false,
          success: function(chartData) {
              alert(‘success’
          },
          error: function(xhr, ajaxOptions, thrownError) 
          {
                    debugger;
                    ShowDialogError(xhr, 'Site Status Report');
                  }
          });
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You webserver will limit the maximum response size limit. You should refer to documentation on your web server of choice to see how best to increase that limit beyond whatever it is set to today.

The JsonResult class does have a property (maxJsonLength) you may also try changing

var jsonResult = Json(dataPlot, JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength = int.MaxValue;
return jsonResult;

Possible configuration change

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

Most importantly - you may want to reconsider your call to limit or somehow partition the responses into more manageable chunks as a default response limit is fairly large and can take a long time to return (network latency)

Generally speaking it's usually not a good idea to increase your response size limit. But that is probably the problem you are experiencing.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...