我在 ASP.NET Web 表单应用程序中使用 Crystal Reports 13.5。我尝试将
Close()
和 Dispose()
调用放入 Page_Unload
方法中,但没有帮助。
75 份报告后,我开始收到错误:
已达到系统管理员配置的最大报告处理作业限制。
我应该购买 Business Object 的许可证吗?
它通过处理报告然后调用 GC.Collect() 对我有用。在我的例子中,仅仅处理对象是不够的。检查this了解完整详细信息。
编辑: 根据 Div 的评论,这是链接中的解决方案:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using CrystalDecisions;
using CrystalDecisions.CrystalReports;
using CrystalDecisions.CrystalReports.Engine;
namespace Test.Utilities
{
public class ReportFactory
{
protected static Queue reportQueue = new Queue();
protected static ReportClass CreateReport(Type reportClass)
{
object report = Activator.CreateInstance(reportClass);
reportQueue.Enqueue(report);
return (ReportClass)report;
}
public static ReportClass GetReport(Type reportClass)
{
//75 is my print job limit.
if (reportQueue.Count > 75) ((ReportClass)reportQueue.Dequeue()).Dispose();
return CreateReport(reportClass);
}
}
}
为时已晚,但我找到了解决方案,但角度不同......
您可以直接生成PDF并在中显示。
通过这样做,您还可以在使用后关闭rd对象...
Crystal 打印引擎设计为默认打印作业限制为 75 个。一旦超过这个限制,上述问题就会开始出现。
通过更改注册表中的一个值,这个问题很容易解决:
HKEY_LOCAL_MACHINE\SOFTWARE\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Report Application Server\InprocServer
欲了解更多信息,请查看以下链接