Чрезвычайно медленный рендеринг Reportviewer в ASP.Net MVC - PullRequest
1 голос
/ 23 сентября 2011

Я искал решение для создания отчетов в ASP.Net MVC, и я действительно нашел решение от Rai Kaimal Рендеринг RDLC напрямую в поток ответов в ASP.NET MVC . Все работает просто отлично, но функция localReport.Render () отрисовывает страницу очень долго (40 секунд для 2 очень простых страниц - те же отчеты выполняются за 2 секунды из решения winforms). Любая помощь будет оценена. Если нет возможности ускорить отчет, мне интересно узнать, как другие разработчики обрабатывают отчетность в решении ASP.Net MVC.

Вот мой код:

    public ActionResult CustomerReport()
    {
        var localReport = new LocalReport
                              {
                                  ReportPath = Server.MapPath("~/Reports/CustomerReport.rdlc")
                              };
        var reportDataSource = new ReportDataSource("Customers", _repository.GetAll( ));

        localReport.DataSources.Add(reportDataSource);

        const string reportType = "PDF";

        string mimeType;
        string encoding;
        string fileNameExtension;

        //The DeviceInfo settings should be changed based on the reportType

        //http://msdn2.microsoft.com/en-us/library/ms155397.aspx

        const string deviceInfo = "<DeviceInfo>" +
                                  "  <OutputFormat>PDF</OutputFormat>" +
                                  "  <PageWidth>8.5in</PageWidth>" +
                                  "  <PageHeight>11in</PageHeight>" +
                                  "  <MarginTop>0.5in</MarginTop>" +
                                  "  <MarginLeft>1in</MarginLeft>" +
                                  "  <MarginRight>1in</MarginRight>" +
                                  "  <MarginBottom>0.5in</MarginBottom>" +
                                  "</DeviceInfo>";

        Warning[] warnings;
        string[] streams;

        //Render the report
        byte[] renderedBytes = localReport.Render(
            reportType,
            deviceInfo,
            out mimeType,
            out encoding,
            out fileNameExtension,
            out streams,
            out warnings);

        return File(renderedBytes, mimeType);
    }

1 Ответ

0 голосов
/ 04 мая 2018

Размещение <trust legacyCasModel="true" level="Full"/> внутри <system.web> тега в web.config сделал это для меня.Я в ASP.NET Webforms, хотя. Подробнее здесь

...