一尘不染

JSON数据大小限制

json

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

第一部分–控制器类

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

}

第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');
                  }
          });

阅读 2302

收藏
2020-07-27

共1个答案

一尘不染

您的网络服务器将限制最大响应大小限制。您应该参考所选择的Web服务器上的文档,以了解如何最好地增加该限制,使其超过今天设置的限制。

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

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

可能的配置更改

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

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

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

2020-07-27