与从 URL 手动点击查看报告相比,SSRS Web 服务渲染方法从代码中花费的时间更长

SSRS web service Render method takes longer from code compared to manually hitting View Report from the URL

有没有人使用过 SSRS Web 服务中的 Render 方法ReportExecution2005

我注意到从代码生成报告比使用 URL 手动生成报告花费的时间更长。有什么我可以的吗configure/setup?

这是我使用的代码:

代码正在运行,只是性能明显变慢,并且对于一些报告来说,与 运行 手动相比,它需要很长时间才能运行,只需要 < 5 秒。

        public byte[] GetSSRSInvoice(string invoiceNumber)
        {
            byte[] reportBytes = null;
            using (var webServiceProxy = new SSRSWebReference.ReportExecutionService())

            if (!String.IsNullOrEmpty(ConfigurationManager.AppSettings.Get("SSRSReportPath")) && !String.IsNullOrEmpty(ConfigurationManager.AppSettings.Get("SSRSUserDomain")) && !String.IsNullOrEmpty(ConfigurationManager.AppSettings.Get("SSRSUserName")) && !String.IsNullOrEmpty(ConfigurationManager.AppSettings.Get("SSRSUserPassword")))
            {
                string sUserName = ConfigurationManager.AppSettings.Get("SSRSUserName");
                string sUserDomain = ConfigurationManager.AppSettings.Get("SSRSUserDomain");
                string sUserPassword = ConfigurationManager.AppSettings.Get("SSRSUserPassword");
                string reportName = ConfigurationManager.AppSettings.Get("SSRSReportPath");
                webServiceProxy.Credentials = new System.Net.NetworkCredential(sUserName, sUserPassword, sUserDomain);

                // Init Report to execute
                ExecutionInfo executionInfo = webServiceProxy.LoadReport(reportName, null);

                ParameterValue[] parameters = new ParameterValue[3];
                parameters[0] = new ParameterValue();
                parameters[0].Name = "GENERIC";
                parameters[0].Value = invoiceNumber;
                parameters[1] = new ParameterValue();
                parameters[1].Name = "TYPE";
                parameters[1].Value = "1";
                parameters[2] = new ParameterValue();
                parameters[2].Name = "PARAMTYPE";
                parameters[2].Value = "1";   

                // Attach Report Parameters
                webServiceProxy.SetExecutionParameters(parameters, null);
                string extension, mimeType, encoding;
                Warning[] warnings;
                string[] streamIds;

                // Render
                reportBytes = webServiceProxy.Render(ExportFormat.PDF.ToString(), null, out extension, out mimeType, out encoding, out warnings, out streamIds);

            }
            return reportBytes;
        }

谢谢!

当您从 URL 中点击报表进行查看时,它以 RPL 呈现格式执行。在此步骤中,您的报告需要时间 1. 数据获取 2. 渲染

因此总耗时为(数据获取时间 + 渲染时间)。现在您将相同的报告导出为其他格式(如 PDF/XLS 等),那么总时间将保持原样(RPL 渲染期间的数据获取时间 + RPL 渲染期间的渲染时间 + 所选导出的渲染时间 format/render) .请注意,根据所选的导出格式,渲染时间会有所不同。

现在,如果我们使用 ReportExecution2005 讨论您的代码,您正在将报告导出为 PDF 格式。在这种情况下,总时间为(数据获取时间 + Render/export 到 PDF 时间 +C# 代码执行时间)。 基于此,您将能够比较同一报告的两个不同渲染之间的公平时间。