最大报表处理作业限制水晶报表,这是由于我的代码错误?

时间:2016-06-09 06:13:24

标签: c# asp.net vb.net reporting-services crystal-reports

我使用的是使用visual studio 2012的Microsoft crystal report开发人员版本。在我的报告正常工作之前,当我在生产中部署我的报告时,之后我收到错误,系统管理员配置的最大报告处理作业限制已经到达水晶报告,也在c-> windows->临时文件夹.rpt文件没有删除。如何在临时文件夹中删除它。我的代码中有任何错误。我正在使用以下代码。我怎么能摆脱这个错误。我也阅读各种论坛,但我没有找到解决方案

public partial class myClass : System.Web.UI.Page
    {
ReportDocument crystalReport = new ReportDocument();

protected void Page_Init(object sender, EventArgs e)
        {


crystalReport.Load(Server.MapPath("~/path/mainrep.rpt"));
                    crystalReport.SetDataSource(dtblstdtmtbl);
int exportFormatFlags = (int)(CrystalDecisions.Shared.ViewerExportFormats.PdfFormat);
                    cviewer.AllowedExportFormats = exportFormatFlags;
                    cviewer.ToolPanelView = CrystalDecisions.Web.ToolPanelViewType.None;
                    cviewer.HasToggleGroupTreeButton = false;
                    cviewer.HasToggleParameterPanelButton = false;
                    cviewer.DisplayGroupTree = false;
                    cviewer.EnableDrillDown = false;

                    cviewer.ReportSource = crystalReport;
   }




protected void Page_Unload(object sender, EventArgs e)
        {
            CloseReports(crystalReport); 
            crystalReport.Close();
            crystalReport.Dispose();
            cviewer.Dispose();
            crystalReport = null;
            cviewer = null;
            GC.Collect();
            GC.WaitForPendingFinalizers();
        }//end page unload 


        private void CloseReports(ReportDocument reportDocument)
        {
            Sections sections = reportDocument.ReportDefinition.Sections;
            foreach (Section section in sections)
            {
                ReportObjects reportObjects = section.ReportObjects;
                foreach (ReportObject reportObject in reportObjects)
                {
                    if (reportObject.Kind == ReportObjectKind.SubreportObject)
                    {
                        SubreportObject subreportObject = (SubreportObject)reportObject;
                        ReportDocument subReportDocument = subreportObject.OpenSubreport(subreportObject.SubreportName);
                        subReportDocument.Close();
                    }
                }
            }
            reportDocument.Close();
        }
}

1 个答案:

答案 0 :(得分:0)

当Crystal Report发出以下消息时,这是一个非常常见的错误。

“已达到系统管理员配置的最大报告处理作业限制。”

这实际上意味着已达到Crystal Report打印作业限制,您应该通过增加注册表中的作业限制来解决此问题。造成此问题的根本原因是垃圾收集器(GC)在其收集过程中无法清除报告文档的引用,而只是清除了报告查看器。

HKEY_LOCAL_MACHINE \ SOFTWARE \ CRYSTAL DECISIONS \ 10.0 \ REPORT APPLICATION SERVER \ SERVER \ PrintJobLimit