Crystal Reports for Visual Studio 2010错误

我正在尝试使用ASP.NET 4.0和Visual Studio 2010从我的Web应用程序运行水晶报表。我已经从SAP站点安装了以下内容( http://www.businessobjects.com/jump/xi/crvs2010 /us2_default.asp )

1)SAP Crystal Reports,Visual Studio 2010版本 – 标准EXE安装包,用于将软件安装到Visual Studio IDE中。

2)用于.NET Framework 4的SAP Crystal Reports运行时引擎(64位)

我有一个名为Reports.aspx的页面,其中我有一个水晶报表查看器控件

 

在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(path)行上,我收到以下错误:

不支持的操作。 由JRC引擎处理的文档无法在C ++堆栈中打开。

我怎样才能解决这个问题?

确保报告在app_code文件夹中初始化它的新实例,而不是初始化报告文档并在其中加载报告。

 Sample report = new Sample(); 

这对我有用

我也遇到了同样的问题我的问题是报告路径无效,可能你有同样的问题,检查Server.MapPath(“Reports / Sample.rpt”)返回有效路径?

您需要修改.rpt文件中的两个属性:

  1. 默认情况下, Build Action设置为“Embedded Resource”。 将其更改为“ 内容 ”。
  2. 默认情况下,“ 复制到输出 ”设置为“不复制”。 将其更改为“ 始终复制 ”。

重建,构建部署包和发布。 完成!

注意:下面,术语“WebSite”指的是IIS中的实际网站节点,而不是网站中的虚拟目录。

问题根本原因:应用程序无法访问“aspnet_client”文件夹。
出现这种情况有几个原因:

  1. 由于SAP CR安装程序似乎在… \ inetpub \ wwwroot \文件夹中安装了aspnet_client文件夹,如果您的网站物理路径不是… \ 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文件夹,并且应用程序中的报告应该可以正常工作。

当我将网站转换为Web应用程序时,我遇到了这个问题。 报告在我的开发机器上运行正常,但在服务器上运行不正常。 然后我意识到服务器上缺少 rpt文件!

默认情况下,报表文件被视为嵌入式资源,并且在Web应用程序发布时不会被复制。 我只是单独更改了它们,重新发布了网站,一切都很顺利。

如果我错误地在Crystal Reports设计器中打开了报表文件,我的报表加载也会失败。

这个错误是一种真正的享受,并且似乎有许多可能的前因。 幸运的是,我只浪费了一天的特殊变化:

ReportDocument.Load()也生成本地临时副本。 (这可能只是在来自网络驱动器位置的负载的情况下,我没有在本地负载的情况下测试它。)

如果发生加载的用户上下文无权在本地创建临时文件,则Load将失败并返回相同的非常无用的错误。


此外,我最终使用Process Monitor进行诊断。 它也可能对你有所帮助。

请确保您的报告rpt文件位于其原始文件夹中。 在我将我的MVC网站“发布”到IIS之后,我首先得到了同样的错误。 我没有意识到“发布”没有将rpt文件放入包中。

  1. 将“Crystal报表引擎”重新安装到服务器

  2. Build Action设置为“Content”。

它对我来说非常有用..!