JSON数据大小限制

JSON数据大小限制,json,asp.net-mvc-4,highcharts,Json,Asp.net Mvc 4,Highcharts,在HighChart中,我需要根据x轴和y轴绘制一系列数据。HighChart希望数据采用json格式。也就是说,[[x,y],[x,y].[x,y]]。其中x和y是时间(1392345000–Unix历元格式)和值(49.322)。因此,我正在进行一个ajax调用以获取数据,如果成功,我将在highchart中呈现json返回的数据。在大多数情况下,即,如果数据计数([x,y])低于87500行,Json将从控制器返回数据以供查看。但是,当数据超过87500时,将使用404调用ajax错误,即

在HighChart中,我需要根据x轴和y轴绘制一系列数据。HighChart希望数据采用json格式。也就是说,[[x,y],[x,y].[x,y]]。其中x和y是时间(1392345000–Unix历元格式)和值(49.322)。因此,我正在进行一个ajax调用以获取数据,如果成功,我将在highchart中呈现json返回的数据。在大多数情况下,即,如果数据计数([x,y])低于87500行,Json将从控制器返回数据以供查看。但是,当数据超过87500时,将使用404调用ajax错误,即not found错误。json返回的数据有大小限制吗

第1节-控制器类
您的Web服务器将限制最大响应大小限制。您应该参考所选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>

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

一般来说,增加响应大小限制通常不是一个好主意。但这可能就是你正在经历的问题

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

这是减少post中数据限制的最佳方法

MaxJsonLength:这有助于获取或设置要发送的最大JSON内容长度。默认值为2097152个字符,等于4MB的Unicode字符串数据。如果需要,您甚至可以根据需要增加大小,因为您将在本文后面了解到这一点

解决方案:

protected override JsonResult Json(object data, string contentType,Encoding contentEncoding, JsonRequestBehavior behavior)

    {

    return new JsonResult()

    {

    Data = data,

    ContentType = contentType,

    ContentEncoding = contentEncoding,

    JsonRequestBehavior = behavior,

    MaxJsonLength = Int32.MaxValue

    };

    }

谢谢佩普托。现在,在如上所述更改代码之后,我们可以返回大的jsondata。但正如你所说的,响应限制很大,需要很长时间才能运行。我需要找到一种划分响应限制的方法。设计这样的东西可能非常粗糙。我能提供的最好的想法是看一看像信号器这样的技术,打开一个持久连接,通过多次调用将数据从服务器发送到客户机,在客户机上编译,然后发送到high chart。另一种选择是,将日期分解为多个调用,并由when承诺包围,when全部返回,然后编译成单个集合并传递……等等
var jsonResult = Json(dataPlot, JsonRequestBehavior.AllowGet);    
jsonResult.maxJsonLength = int.MaxValue;    
return jsonResult;
protected override JsonResult Json(object data, string contentType,Encoding contentEncoding, JsonRequestBehavior behavior)

    {

    return new JsonResult()

    {

    Data = data,

    ContentType = contentType,

    ContentEncoding = contentEncoding,

    JsonRequestBehavior = behavior,

    MaxJsonLength = Int32.MaxValue

    };

    }