由JRC引擎处理的文档无法在C ++堆栈中打开

我用.net4.0在vs2010中创建了一个水晶报告。 当我发布网站时,它会抛出错误“由JRC引擎处理的文档无法在C ++堆栈中打开”。 我在服务器上发布了这个网站,我试图从客户端访问它,我确实在app_code中记录了.rpt文件,但又一次得到了同样的错误。 所以我创建了一个文件夹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 

检查.rpt文件的路径! 错误描述与其真正原因无关。 它找不到您的.rpt文件!

在我的情况下,路径必须是位于Reports子文件夹中的.rpt文件:

 Server.MapPath("~/Reports/InvoiceRegular.rpt"); 

为我工作。

这项工作对我而言

  1. 右键单击Rpt文件。
  2. 选择属性
  3. 一个。 将行动建立为“内容”

    湾 复制到输出目录为“不要复制”

    C。 为自定义工具和自定义工具命名空间放空

我不知道这是否会对别人有所帮助,但我遇到了这个问题,事实certificate这是一个如此简单的解决方案。 我错误输入.rpt文件的文件名…文件名中的两个单词之间有一个空格(我通常不会因为这个原因而这样做)但是当我在我的代码中包含该名称时,我已经离开了这个空间出。 纠正了文件名,问题就消失了。

只做这些步骤

(1)右键单击“.rpt”文件选择“ 属性

1.a)将行动建立为“ 内容

1.b)复制到输出目录为“ 始终复制

(2)检查.rpt文件Server.MapPath(“你的路径”)的路径;

例如: Server.MapPath("~/Reports/MyReport.rpt");

注意:如果带有报表查看器的rpt和aspx页面都位于同一文件夹中,则无需提供完整路径,则只能在Server.MapPath中提供filename.rpt。

找到了解决方案,我首先使用带有自己的水晶报告的Visual Studio 2005,然后我用SAP下载的单独水晶报告升级到VS2010。 我从SAP研究并发现:

由于每个版本的Crystal Reports都有自己必须正确部署的特定运行时,因此部署的运行时与项目中引用的Visual Studio .NET的Crystal Reports程序集保持一致至关重要。

所以我卸载了以前的版本并只使用了一个版本而且它有效。 :)感谢ta.speot.is的关注。 它从来都不是编码问题。

我找到了另一种情况,在这种情况下出现了这个相当无益的错误。

如果您在Visual Studio中运行/调试Web应用程序,但仍然在Crystal Reports(2011)中打开报表,您将收到错误消息。

今天开车约一个小时!

这恰好发生在我身上,经过数小时的头痛后,我发现这是一个文件权限问题。 出于某种原因,当从我们的CR dev服务器复制到共享的自定义.rpt目录时,文件的权限全部被抬起,我不得不将多个用户组的权限添加回文件。

将文件夹(aspnet_client)从(C:\ inetpub \ wwwroot)复制并粘贴到网站文件夹中,并确保.rpt文件位于同一文件夹中

确保文件路径正确,如@serop提到的那样。 我也注意到报告文件夹不会发布的位置。 因此不得不手动发布报告文件夹。

请检查您的.rpt文件是否存在。如果不是请从本地复制到托管文件夹,它将开始工作。

为我工作:复制.rpt文件从本地机器覆盖主机上的.rpt文件然后它运行良好。