撕毁RDLC报告的性能问题

时间:2017-06-27 06:52:44

标签: c# asp.net asp.net-mvc rdlc

我们在mvc.net应用程序中使用rdlc报告。当渲染该报告花费超过5分钟时,我们能够以几秒钟的速度获取数据。我们在Crystal报表中使用了相同的报表,只需1分钟即可呈现该报表。但是,我们在报告中使用了分组,但我认为rdlc报告应该比水晶报告更快。您能否提出任何改善本报告绩效的想法。

    reportViewer.LocalReport.Refresh();

reportViewer.ProcessingMode = ProcessingMode.Local;
reportViewer.SizeToReportContent = true;
reportViewer.AsyncRendering = true;
reportViewer.SizeToReportContent = true;
reportViewer.Width = U`enter code here`nit.Pixel(350);
reportViewer.Height = Unit.Pixel(50);
ReportDataSource reportDataSource = new ReportDataSource();

reportDataSource.Name = "DataSet";

reportDataSource.Value = result;

reportViewer.LocalReport.ReportPath = Request.MapPath(Request.ApplicationPath) + @"\ReportsrptReport.rdlc";        
reportViewer.LocalReport.DataSources.Add(reportDataSource);

reportViewer.LocalReport.Refresh();

bytes = reportViewer.LocalReport.Render("PDF", null, out mimeType, out encoding, out filenameExtension, out streamids, out warnings);

TempData["FileData"] = bytes;
TempData["MimeType"] = mimeType;
TempData["FileName"] = fileName;

return File(bytes, mimeType, fileName);

2 个答案:

答案 0 :(得分:0)

rdlc performance blog for more details

  1. 删除SSRS报告中的所有表达
  2. 尝试在子域上使用asp.net 3.5或4.0框架,就像使用MVC一样。
  3. 返回datatable作为数据源的运行速度比对象列表快得多。
  4. 希望这会对你有所帮助。

答案 1 :(得分:0)

经过我 5 个月的调查,没有办法以可接受的速度水平提高 RDLC 的性能。 RDLC 是为简单的报告创建的,例如收据和发票。如果报表页数大于 100 且没有任何内部表达式,或大于 50 页具有动态内部表达式,则使用 html 是可接受的加载和呈现速度的最佳选择。