Load report failed. at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()

3355307 picture 3355307 · Mar 31, 2014 · Viewed 14.7k times · Source

When we were running reports in .NET 3.5 there was no problem. As we moved to .NET 4.5 and upgraded Crystal to these versions:

We keep getting this error:

Load report failed.
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob)
at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename)
at AppSuite.WebApp.CrystalViewer.LoadReport(Boolean bRefresh)
at AppSuite.WebApp.CrystalViewer.Page_Load(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

The maximum report processing jobs limit configured by your system administrator has been reached.

at CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options)
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options)
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()

The dispose method is called in the code so i don't think that's causing problem:

Private oReportDocument As New ReportDocument

Private Sub LoadReport(ByVal bRefresh As Boolean)

    'Get the report data
    Dim dtReport As DataTable = ReportHelper.GetReportData(Me.CacheKey, bRefresh)

    'If there is data to display bind it to the Crystal Viewer
    If dtReport.Rows.Count > 0 Then
        With oReportDocument
            .Load(ReportHelper.GetReportPath(Me.ReportId))
            .SetDataSource(dtReport)
            .PrintOptions.PaperSize = Common.Settings.CrystalPaperSize
        End With
        crvMain.ReportSource = oReportDocument
    Else
        'Hide the controls and display a message if there is no data
        crvMain.Visible = False
        btnPDF.Visible = False
        btnExcel.Visible = False
        lblNoResults.Visible = True
    End If

End Sub

Protected Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Unload
    oReportDocument.Dispose()
End Sub

ASPX part

<CR:CRYSTALREPORTVIEWER id="crvMain"  HasPrintButton="False" HasExportButton="False" 
    runat="server" ToolPanelView="None" BorderColor="Transparent" BorderStyle="None"
    Height="50px" Width="350px" HasRefreshButton="True" HasCrystalLogo="False" 
    HasToggleGroupTreeButton="False" meta:resourcekey="crvMainResource1"></CR:CRYSTALREPORTVIEWER>

Changing the PrintJobLimit = -1 in registry did not solve the problem.

Do we need to buy the full version of crystal reports or there is something else that's causing this issue?

Answer

JenonD picture JenonD · May 28, 2014

We had a similar issue. In our case we had two versions of crystal reports installed in the server. Somehow the newer Crystal Report version installed in the server doesn't seems to be working. When we use report.Load() it was hanging forever. This is how we solved.

  • Delete physical Crystal Report dlls from the bin folder (of the deployment)
  • Added dll version redirect in the web.config to use the old version

Web.config > runtime section.

<runtime>
  <assemblyBinding>
    <dependentAssembly>
     <assemblyIdentity name="CrystalDecisions.CrystalReports.Engine" publicKeyToken="692fbea5521e1304"/>
     <bindingRedirect oldVersion="13.0.2000.0" newVersion="10.5.3700.0"/>
    </dependentAssembly>

     <dependentAssembly>
      <assemblyIdentity name="CrystalDecisions.CrystalReports.Shared" publicKeyToken="692fbea5521e1304"/>
      <bindingRedirect oldVersion="13.0.2000.0" newVersion="10.5.3700.0"/>
    </dependentAssembly>

     <dependentAssembly>
       <assemblyIdentity name="CrystalDecisions.Shared" publicKeyToken="692fbea5521e1304"/>
      <bindingRedirect oldVersion="13.0.2000.0" newVersion="10.5.3700.0"/>
    </dependentAssembly>
  </assemblyBinding>
</runtime>