2010-11-28 6 views
16

Я пытаюсь запустить хрустальный отчет из своего веб-приложения, которое было создано с использованием ASP.NET 4.0 и Visual Studio 2010. Я установил следующее из сайта SAP (http://www.businessobjects.com/jump/xi/crvs2010/us2_default.asp)Ошибка Crystal Reports для Visual Studio 2010

1) SAP Crystal Reports, версия для Visual Studio 2010 - Стандартный установочный пакет EXE, который устанавливает программное обеспечение в среду разработки Visual Studio.

2) SAP Crystal Reports для среды выполнения .NET Framework 4 (64-битных)

У меня есть страница под названием Reports.aspx, в котором у меня есть кристалл отчет управление просмотром

<CR:CrystalReportViewer ID="rptViewer" runat="server" AutoDataBind="true" /> 

В файл Reports.aspx.cs у меня есть следующий код:

protected override void OnPreRender(EventArgs e) 
{ 
    ReportDocument report = new ReportDocument(); 
    var path = Server.MapPath("Reports/Sample.rpt"); 
    report.Load(path); 
    report.SetDatabaseLogon("username", "password", "servername", "databasename"); 
    rptViewer.ReportSource = report; 
} 

на линии report.Load (путь) Я получаю следующее сообщение об ошибке:

Неподдерживаемая операция. Документ, обработанный механизмом JRC, не может быть открыт в стеке C++.

Как это исправить?

ответ

10

удостоверьтесь, что отчет находится в папке app_code инициализируйте новый экземпляр, вместо того чтобы инициализировать документ report и загрузить отчет в нем.

Sample report = new Sample(); 

это работало для меня

13

Я также получил в тот же проблема, моя проблема была путь доклад не был действительным, Может быть, у вас есть такая же проблема, проверьте Server.MapPath («Отчеты/Sample.rpt»), возвращающий правильный путь?

+1

Спасибо за ваш ответ. Я просто столкнулся с той же проблемой. Мне не приходило в голову проверить, что файлы отчетов на самом деле там! D'о! Атрибуты в файлах отчетов были установлены как copy = не копировать, поэтому автоматическая сборка не выводила их. – Anthony 2011-09-27 00:05:03

+0

+1 Если файла отчета нет, вы можете столкнуться с этой проблемой, как я сделал – 2012-04-05 07:50:19

+0

@Priyan R - - У вас, похоже, хорошая ручка. Не могли бы вы помочь мне с этим [link] http://stackoverflow.com/questions/22671709/asp-crystalreportviewer-will-not-display-report – ArtK 2014-03-26 22:20:10

3

Я столкнулся с этим, когда я преобразовал веб-сайт в веб-приложение. Отчет будет отлично работать на моей машине dev, но не на сервере. Тогда я понял, что файл rpt был отсутствует на сервере!

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

0

Убедитесь, что ваши файлы отчета rpt находятся в исходной папке. Сначала я получил ту же ошибку, после того как я опубликовал свой веб-сайт MVC в IIS. Я не понимал, что «Публикация» не помещала rpt-файлы в пакет.

2

У меня также был отказ при загрузке отчета, если я ошибочно оставил файл отчета открытым в дизайнере Crystal Reports.

5

ПРИМЕЧАНИЕ. Ниже термин «WebSite» относится к фактическим узлам веб-сайта в IIS, а не к виртуальному каталогу на веб-сайте.

Проблема Корневая причина: нет папки «aspnet_client», доступной приложению.
Это может произойти по нескольким причинам:

  1. Поскольку инсталлятор SAP CR, как представляется, установить папку aspnet_client в ... \ Inetpub \ Wwwroot \ папку, если ваш веб-сайт физический путь НЕ ...\ inetpub \ wwwroot, ваше приложение не будет иметь доступ к папке aspnet_client.
  2. Если папка aspnet_client была перемещена или удалена с верхнего уровня вашего физического пути вашего веб-сайта, ваше приложение IIS не будет иметь доступ к этой папке.

Проблема Решение (для Windows Server 2008 R2)

  1. Перейти к менеджеру IIS на сервере
  2. Разверните узел в виде дерева для WebSite запуска приложения
  3. Посмотрите на уровень сразу под узлом веб-узла и убедитесь, что вы видите папку «aspnet_client».
  4. Если вы видите папку, то, возможно, эта причина не является причиной вашей проблемы.
  5. Если вы НЕ видите папку, найдите на ней жесткий диск сервера и КОПИРУЙТЕ ее на физическом пути веб-сайта.
  6. Щелкните правой кнопкой мыши на узле веб-сайта и нажмите Обновить из всплывающего меню
  7. Теперь вы должны увидеть папку aspnet_client на уровне, прямо под узлом вашего веб-сайта, и отчеты в приложении должны работать.
2

Эта ошибка является настоящим удовольствием и, кажется, имеет много возможных антецедентов. К счастью, я только потратил впустую день на мой конкретный вариант:

ReportDocument.Load() также делает местную копию темпа. (Это может быть только в случае нагрузки из местоположения сетевого диска, я не тестировал это при локальной нагрузке.)

Если пользовательский контекст, под которым происходит загрузка, не имеет полномочий для создайте временный файл локально, Load потерпит неудачу с той же самой бесполезной ошибкой.


Кроме того, я в конечном итоге диагностировать это с Process Monitor. Это может быть полезно и вам.

5

Вам нужно будет изменить два свойства в .rpt файлов:

  1. Сложение Действие устанавливается в «Embedded Resource» по умолчанию. Измените его на «Контент».
  2. Копирование на выход установлено в положение «Не копировать» по умолчанию. Измените его на «Скопируйте всегда».

Перестроить, построить пакет развертывания и опубликовать. Готово!

0
  1. Переустановите "Crystal Report двигатель" на сервер

  2. Сложение Действие установлено значение "Content".

Это отлично сработало для меня ..!

Смежные вопросы