C# ASP.NET MVC在Ajax请求上的应用程序,带有大数据源的剑道图?
我正在使用ASP.NETMVC的剑道UI图表,并向其提供数据传输对象列表,以通过Ajax请求填充数据。然而,问题在于名单的大小。我在这个列表中有大约3900个dto(从文件中解析),每个dto中有9个对象:C# ASP.NET MVC在Ajax请求上的应用程序,带有大数据源的剑道图?,c#,asp.net,json,ajax,kendo-ui,C#,Asp.net,Json,Ajax,Kendo Ui,我正在使用ASP.NETMVC的剑道UI图表,并向其提供数据传输对象列表,以通过Ajax请求填充数据。然而,问题在于名单的大小。我在这个列表中有大约3900个dto(从文件中解析),每个dto中有9个对象: public DateTime Time { get; set; } public int BeatsPerMinute { get; set; } public double Speed { get; set; } public int Cadence { get; set; }
public DateTime Time { get; set; }
public int BeatsPerMinute { get; set; }
public double Speed { get; set; }
public int Cadence { get; set; }
public double? Altitude { get; set; }
public int Power { get; set; }
public int? PowerBalance { get; set; }
public double Distance { get; set; }
我需要每个dto中的所有项目,但是当我发送Ajax请求时,我的浏览器超时。我已经将我的web.config jsonSerialization maxJsonLength设置为50000000,但是这不起作用
对此,建议采用什么方法?如果使用asp.net mvc 3.0,它会忽略web.config中的maxJsonLength。在控制器中使用:
return new JsonResult { Data = Result, MaxJsonLength = Int32.MaxValue };
所以事实证明,问题不是由我的服务或json引起的,因为当我仔细阅读代码时,一切都很好。当我填充剑道UI图表时,我试图在页面上同时呈现23400个DOM元素。通过禁用dto中每个项目的绘图(不包括功率平衡)并仅显示行,我保存了19500个DOM元素的加载
series.Line(a => a.BeatsPerMinute).Markers(c => c.Visible(false));
series.Line(a => a.Altitude).Markers(c => c.Visible(false));
series.Line(a => a.Cadence).Markers(c => c.Visible(false));
series.Line(a => a.Power).Markers(c => c.Visible(false));
series.Line(a => a.Speed).Markers(c => c.Visible(false));
然后是约会时间。列表中有3900个DTO,这意味着我在图表中呈现了3900个日期时间值。通过提供30步(在我的例子中,30秒,因为每个DateTime值相隔一秒),我保存了几乎所有剩余的3900个加载对象
.CategoryAxis(axis => axis
.Categories(a => a.Time)
.Labels(l => l.Rotation(-90)
.Step(30))
谢谢设置MaxJsonLength似乎没有帮助。我的页面仍然没有响应。如果json长度出现问题,您将看到一条错误消息。控制器操作中似乎没有超时。尝试设置断点作为回报。计算结果需要多长时间?