Отчет о Загрузке CrystalReport перестал работать

Между прочим, причина этого странного поведения заключается в том, что команда безопасности CLR изменила верификатор непосредственно перед отправкой v2, так что стало невозможно проверить не виртуальный вызов виртуального метода одного класса из метода в другом класс.

Для дальнейшего объяснения этой проблемы см. Мою статью на эту тему несколько лет назад.

http://blogs.msdn.com/ericlippert/archive/2005/11/14/why-are-base-class-calls-from-anonymous-delegates-nonverifiable.aspx

Это сейчас устарело; мы исправили компилятор, чтобы он теперь генерировал для вас помощник.

12
задан mSafdel 26 July 2009 в 11:17
поделиться

4 ответа

The internet also suggests reinstalling the crystal report runtimes on the machines you are trying to open the report on (making sure that all locations have the same version).

0
ответ дан 2 December 2019 в 05:41
поделиться

Если ваше приложение является автономным исполняемым файлом, то эта ошибка возникает из-за того, что вы неправильно закрываете объект отчета, когда закончили с тем, что вы делаете. Вы можете увидеть эту ошибку в своем приложении как приложении ASP.NET с большим количеством пользователей, одновременно обращающихся к вашему сайту.

Вы можете привести к тому, что ошибка появится раньше, настроив этот раздел реестра:

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

Обычно это значение по умолчанию 75. Для отладки вы можете установить меньшее значение и вызвать более быстрое появление ошибки.

Когда вы выполняются с использованием объекта отчета, вызовите метод .Close (), который очистит используемые неуправляемые ресурсы.

Есть те, которые упоминают об изменении настройки на -1. Это ошибка, это вызовет другие проблемы только для долго работающего приложения. В конечном итоге у процесса закончатся ресурсы и начнется сбой, который будет еще труднее устранить.

19
ответ дан 2 December 2019 в 05:41
поделиться

К вашему сведению, я только что проверил это решение для аналогичной проблемы. Метод ReportDocument.Load не срабатывал при использовании сопоставленного сетевого ресурса или UNC-пути, а установка crystal reports VS runtime на файловый сервер устранила проблему.

0
ответ дан 2 December 2019 в 05:41
поделиться

Я убедился, что решение Джона Дайера, приведенное выше, работает не во всех случаях.

Я также убедился, что переустановка Crystal Runtime не помогла при этой конкретной ошибке.

Для моего приложения это происходило только при установке на Citrix автономного .exe с встроенными отчетами. Прежде чем использовать Crystal Report Viewer, мне нужно убедиться, что я очистил все отчеты, ранее загруженные в программу просмотра, в соответствии с инструкциями Джона. Итак, я написал нечто (на VB), что выглядит так

Public Function ShowRpt(...) As Boolean
    ....
    CleanOutViewer()
    ....
End Function

где CleanOutViewer:

Private Sub CleanOutViewer()
    If Not Me.CrystalReportViewer1.ReportSource() Is Nothing Then
        CType(Me.CrystalReportViewer1.ReportSource(), CrystalDecisions.CrystalReports.Engine.ReportDocument).Close()
        CType(Me.CrystalReportViewer1.ReportSource(), CrystalDecisions.CrystalReports.Engine.ReportDocument).Dispose()
        Me.CrystalReportViewer1.ReportSource() = Nothing
        GC.Collect()
    End If
End Sub

Вызовы после .Close() также не дали никакого эффекта (и были добавлены в качестве альтернативной попытки заставить Crystal освободить ресурсы).

2
ответ дан 2 December 2019 в 05:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: