Документ, обработанный механизмом JRC, не может быть открыт в стеке С++
Я создал отчет о кристалле в vs2010 с .net4.0. при публикации веб-сайта он выдает ошибку "Документ, обработанный механизмом JRC, не может быть открыт в стеке С++". Я опубликовал веб-сайт на сервере, и я пытаюсь получить к нему доступ от клиента, я сделал keet файл .rpt в app_code, но снова получил ту же ошибку. Поэтому я создал папку wwwroot, и в этой папке я сохранил папку asp_client и веб-сайта, и я дал физический путь к wwwroot. все работает отлично, кроме кристалла.
Код файла .cs выглядит следующим образом:
ReportDocument rptDoc = new ReportDocument();
DataSetForCrystalReport ds = new DataSetForCrystalReport();
DataSetForCrystalReport dsHeader = new DataSetForCrystalReport();
DataTable dt = new DataTable();
DataTable dtHeader = new DataTable();
dt.TableName = "dtBill";
string ReceiptNo = Request.QueryString["ReceiptNo"];
dt = getAllOrders(ReceiptNo).Tables[0];
dtHeader = TblcompanysettingsService.GetOrganizationDetails();
ds.Tables[1].Merge(dt);
ds.Tables[2].Merge(dtHeader);
rptDoc.Load(Server.MapPath("crBill.rpt"));
rptDoc.SetDataSource(ds);
CrystalReportViewer1.ReportSource = rptDoc;
ошибка трассировки стека:
[COMException (0x80041811): Unsupported Operation. A document processed by the JRC engine cannot be opened in the C++ stack.]
CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options) +0
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options) +147
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +422
[CrystalReportsException: Load report failed.]
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +549
CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob) +1613
CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename) +189
GenerateBill.Page_Load(Object sender, EventArgs e) in e:\ShareFolder\Movie\wwwroot\Website\GenerateBill.aspx.cs:33
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25
System.Web.UI.Control.LoadRecursive() +71
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3064
Ответы
Ответ 1
Проверьте свой путь к файлу .rpt! Описание ошибки не имеет ничего общего с реальной причиной. Он просто не может найти ваш .rpt файл!
В моем случае путь должен быть для файла .rpt, сидящего в подпапке Reports:
Server.MapPath("~/Reports/InvoiceRegular.rpt");
Работал для меня.
Ответ 2
эта работа для меня
- Щелкните правой кнопкой мыши файл Rpt.
- Выберите свойства
-
Изменено
а. Построить действие как "Содержимое"
б. Скопируйте в выходной каталог как "Не копировать"
с. Пустой для пользовательского инструмента и пользовательского пространства имен инструментов
Ответ 3
Я не знаю, поможет ли это кому-то другому или нет, но у меня была эта проблема, и оказалось, что это такое простое решение для такого глупого движения. Я ошибся filename файла .rpt... в имени файла было пробел между двумя словами (чего я обычно не делал по этой причине), но когда я включил это имя в свой код, я оставил пространство вне. исправлено имя файла, проблема исчезла.
Ответ 4
Просто сделайте эти шаги
(1) Щелкните правой кнопкой мыши на файле ".rpt". Выберите " Свойства"
1.a) Построить действие как " Контент"
1.b) Скопируйте в выходной каталог как " Копировать всегда"
(2) Проверьте свой путь к файлу .rpt Server.MapPath( "Ваш путь" );
например: Server.MapPath("~/Reports/MyReport.rpt");
Примечание: если обе страницы rpt и aspx с программой просмотра отчетов находятся в одной папке, тогда вам не нужно указывать полный путь, вы можете указать только имя_файла .rpt в Server.MapPath.
Ответ 5
Обнаружено решение,
Сначала я использовал Visual Studio 2005 со своим собственным хрустальным отчетом, а затем я усовершенствовал VS2010 с отдельным отчетным кристаллом, который я загрузил из SAP. Я исследовал и нашел в SAP:
Поскольку каждая версия Crystal Reports имеет свою собственную специфическую среду выполнения, которая должна быть правильно развернута, крайне важно, чтобы развернутая среда выполнения была согласована с сборками Crystal Reports для Visual Studio.NET, указанными в вашем проекте.
так что я удалил простую версию и использовал только одну версию, и она сработала.:) спасибо ta.speot.is за вашу заботу. Это никогда не было проблемой кодирования.
Ответ 6
Я нашел еще один набор обстоятельств, при которых появляется эта довольно бесполезная ошибка.
Если вы F5 запускаете/отлаживаете свое веб-приложение в Visual Studio, но все же отчет открыт в Crystal Reports (2011), вы получите сообщение об ошибке.
Погодили мне орехи около часа сегодня!
Ответ 7
Это случилось со мной, и после частых головных болей я обнаружил, что это проблема с правами доступа к файлам. По какой-то причине при копировании с нашего CR-сервера dev в общий пользовательский каталог .rpt права на файл были полностью вставлены, и мне пришлось добавить разрешения для нескольких групп пользователей обратно в файл.
Ответ 8
скопируйте и вставьте папку (aspnet_client) из (C:\inetpub\wwwroot)
в папку веб-сайта и убедитесь, что файл .rpt находится в той же папке
Ответ 9
Убедитесь, что путь к файлу верен, как указано в @serop. Также я заметил, что папка с отчетами не будет опубликована. Поэтому пришлось вручную публиковать папку отчета.
Ответ 10
Работай для меня: копируй .rpt файлы с локальной машины, перезаписывай .rpt файлы на хосте, тогда все будет хорошо.
Ответ 11
Пожалуйста, проверьте, присутствует ли ваш файл .rpt. Если вы не скопируете его из локальной папки в хостинг, он начнет работу.
Ответ 12
Просто скопируйте файл .rpt (шаблон отчета crystl) с локального компьютера в определенную папку сервера/компьютера, и я уверен, что вы можете запустить и решить проблему CrystalDecisions.Shared.CrystalReportsException: загрузка отчета не удалась.
Для меня это работало хорошо и без ошибок на стороне сервера. Мое приложение может хранить PDF файл для совместного использования пути в соответствии с кодом.