sha*_*rad 29 c# asp.net localhost
我用.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
ser*_*rop 48
检查.rpt文件的路径!错误描述与其真正原因无关.它只是找不到你的.rpt文件!
在我的情况下,路径必须是位于Reports子文件夹中的.rpt文件:
Server.MapPath("~/Reports/InvoiceRegular.rpt");
为我工作.
小智 5
我不知道这是否会对别人有所帮助,但我遇到了这个问题,事实证明这是一个如此简单的解决方案.我错误输入.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 的关心。这从来都不是编码问题。
| 归档时间: | 
 | 
| 查看次数: | 64317 次 | 
| 最近记录: |