Не удалось загрузить отчет. в CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()

Когда мы запускали отчеты в .NET 3.5, проблем не было. Когда мы перешли на .NET 4.5 и обновили Crystal до следующих версий:

Мы продолжаем получать эту ошибку:

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)

Достигнуто максимальное количество заданий обработки отчетов, настроенное вашим системным администратором.

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

Метод dispose вызывается в коде, поэтому я не думаю, что это вызывает проблему:

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

<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>

Изменение PrintJobLimit = -1 в реестре не решило проблему.

Нужно ли нам покупать полную версию отчетов о кристаллах или есть что-то еще, что вызывает эту проблему?


comment
PrintJobLimit = -1 (чтобы у него не было ограничений, кроме ограничений системной памяти и т. д.) не работает для CR 13 для VS2010... вместо этого попробуйте установить что-то вроде 1000-10000 в зависимости от ожидаемой нагрузки на движок CR.   -  person Paul Zahra    schedule 26.11.2015


Ответы (2)


У нас была аналогичная проблема. В нашем случае на сервере было установлено две версии отчетов crystal. Почему-то кажется, что более новая версия Crystal Report, установленная на сервере, не работает. Когда мы используем report.Load(), он зависает навсегда. Вот так мы решили.

  • Удалите физические DLL-файлы Crystal Report из папки bin (в развертывании).
  • Добавлено перенаправление версии dll в web.config для использования старой версии.

Web.config > раздел времени выполнения.

<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>
person JenonD    schedule 28.05.2014

Используйте procmon.exe с фильтрами, чтобы найти ошибку... В моем случае я потерял 2 дня, и ошибка была: Отказано в доступе к некоторой папке:

https://stackoverflow.com/a/41942720/1536197

person Hernaldo Gonzalez    schedule 30.01.2017