Почему Crystal Reports создает исключение LoadSaveReportException в IIS7, но работает в приложении Cassini / для настольных ПК? - PullRequest
1 голос
/ 18 января 2010

У меня есть метод, который загружает файл Crystal Reports, устанавливает соответствующую информацию для входа и затем генерирует PDF.

ReportDocument rep = new ReportDocument();
rep.Load(...);

// Set table LogOnInfo

rep.ExportToStream(ExportFormatType.PortableDocFormat);

// Save the PDF to disk or return it as web request

Этот точный код работает в обоих

  1. Автономное приложение для рабочего стола WPF
  2. Веб-сайт ASP.NET MVC, работающий через Cassini, запущенный из VS

, но не работает, когда тот же веб-сайт развернут в IIS7. Это дает довольно бесполезное сообщение и трассировку стека.

Произошла ошибка при попытке загрузить среду выполнения Crystal Reports.

Либо реестр Crystal Reports ключевые разрешения недостаточны или время выполнения Crystal Reports не установлен правильно.

Пожалуйста, установите соответствующий кристалл Отчеты распространяемые (CRRedist * .msi), который содержит версия среды выполнения Crystal Reports (x86, x64 или Itanium), то есть требуется. Пожалуйста, перейдите к http://www.businessobjects.com/support для получения дополнительной информации.

Сведения об исключении: CrystalDecisions.CrystalReports.Engine.LoadSaveReportException: при попытке загрузить среду выполнения Crystal Reports произошла ошибка.

Обратите внимание, что я использую CR 2008 SP2, и файлы не называются CRRedist... с 10.5, поэтому кто-то забыл обновить сообщения где-нибудь :) Вот список всех сред выполнения CR.

Так почему запуск одного и того же кода, ссылающегося на одни и те же сборки, работает в двух перечисленных выше ситуациях, но не на развернутом веб-сайте?

Я нашел это предложение , чтобы дать пользователю IIS доступ на запись во временную папку, и кажется, что среда выполнения Crystal работает там, но я все еще получаю ту же ошибку даже после выдачи IIS_IUSR или IIS AppPool\DefaultAppPool полный доступ к %TEMP%.

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

Ответы [ 2 ]

2 голосов
/ 18 января 2010

Оказывается, что для любых более новых версий Crystal Reports после 10.5 (той, которая входит в комплект VS2008) 64-разрядные среды выполнения отсутствуют.

«Простое» решение - сделать пул приложений 32-битным, и тогда все будет нормально.

Здесь найдено больше объяснений здесь (вместе с ожидаемыми гневными ответами)

0 голосов
/ 28 декабря 2010

Вы должны установить CR версии 13, скачать MSM и собрать установщик с VSS. Finalley запустит установщик (вы создаете) на вашем сервере.

Удачи!

...