JSON数据大小限制

VVR*_*493 4 json highcharts asp.net-mvc-4

在HighChart中,我需要绘制一系列针对x和y轴的数据.HighChart希望数据采用json格式.即,[[x,y],[x,y] ...... [x,y]].其中x和y是时间(1392345000 - Unix纪元格式)和值(49.322).所以我正在进行ajax调用以获取数据,并且在成功时我将json返回的数据呈现在highchart中.在大多数情况下,即,如果数据计数([x,y])低于87500行,则Json将数据从控制器返回到视图.但是当数据超过87500时,使用404调用ajax错误,未找到错误.json返回的数据是否有任何大小限制.

第1节 - 控制器类

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

}
Run Code Online (Sandbox Code Playgroud)

第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');
                  }
          });
Run Code Online (Sandbox Code Playgroud)

Pep*_*pto 13

您的网络服务器将限制最大响应大小限制.您应该参考您选择的Web服务器上的文档,看看如何最好地增加该限制,超出今天设置的限制.

JsonResult类确实有一个属性(maxJsonLength),您也可以尝试更改

var jsonResult = Json(dataPlot, JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength = int.MaxValue;
return jsonResult;
Run Code Online (Sandbox Code Playgroud)

可能的配置更改

<configuration>
    <system.web.extensions>
        <scripting>  
             <webServices>                                                   
                 <jsonSerialization maxJsonLength="1000000" />                 
             </webServices>
        </scripting>
    </system.web.extensions>
</configuration>
Run Code Online (Sandbox Code Playgroud)

最重要的是 - 您可能需要重新考虑您的调用以限制或以某种方式将响应划分为更易于管理的块,因为默认响应限制相当大并且可能需要很长时间才能返回(网络延迟)

一般来说,增加响应大小限制通常不是一个好主意.但这可能是您遇到的问题.