我正面临着一个非常错误的问题,在ASP.NET应用程序中,在多次查看相同的报告后,同时我得到了这样的异常:
已达到系统管理员配置的最大报告处理作业限制。
等等,我知道有很多解决方案,但它们都不适合我。
Private Sub CrystalReportViewer1_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles CrystalReportViewer1.Unload reportFile.Close() reportFile.Dispose() GC.Collect() End Sub
HKEY_LOCAL_MACHINE\SOFTWARE\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Report Application Server\InprocServer
-1\f6和-1\f25 HKEY_LOCAL_MACHINE\SOFTWARE\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Report Application Server\Server
-1\f6中的-1\f25 PrintJobLimit -1\f6注册表编辑为-1\f25 9999 -1\f6,但仍会抛出异常。下面是我称之为报表的代码片段:
Table_Infos = New TableLogOnInfos()
Table_Info = New TableLogOnInfo()
Con_Info = New ConnectionInfo()
With Con_Info
.ServerName = ConfigurationManager.AppSettings("server_name")
.DatabaseName = ConfigurationManager.AppSettings("DB")
.UserID = user_name
.Password = pass_word
.Type = ConnectionInfoType.SQL
.IntegratedSecurity = False
End With
Table_Info.ConnectionInfo = Con_Info
If Session("recpt_lang") = "Arabic" Then
reportFile.Load(Server.MapPath("/Reports/") & "collectrecpt_new_ar.rpt")
ElseIf Session("recpt_lang") = "English" Then
reportFile.Load(Server.MapPath("/Reports/") & "collectrecpt_new.rpt")
End If
For Each mytable In reportFile.Database.Tables
mytable.ApplyLogOnInfo(Table_Info)
Next
CrystalReportViewer1.ReportSource = reportFile
CrystalReportViewer1.SelectionFormula = Session("SelectionForumla")
CrystalReportViewer1 = Nothing
发布于 2012-03-06 23:58:36
我建议您将close/dispose/gc.collect代码移到卸载进程之外。换句话说:
Report in Viewer Control
我的猜测是,当报表被清理时,查看器控件并没有完全关闭。
Crystal是一个内存密集型进程,非常挑剔。
发布于 2012-03-07 00:12:52
毕竟,您必须处理您的报表实例。如果在显示报表后对其进行处理,则永远不会再次看到错误“已达到系统管理员配置的最大报表处理作业数限制”。
Dim report1 As rptBill = clsBill.GetReport(billNumber)
rpt.Print()
'Cleanup the report after that!
rpt.Close()
rpt.Dispose()
发布于 2016-06-18 02:50:03
水晶报表文档实现了IDisposable
接口。因此,您所要做的就是用using
语句封装报表的实例。一旦using
语句完成,它将被自动关闭并释放。你可以这样写:
using(var report = GetInvoiceReport())
{
// your logic here
}
或者(取决于您的上下文):
using(var report = new ReportDocument())
{
// your logic here
}
https://stackoverflow.com/questions/9579914
复制相似问题