我正在尝试使用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的页面,其中我有一个水晶报表查看器控件
<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(path)行上,我收到以下错误:
Unsupported Operation. A document processed by the JRC engine cannot be opened in the C++ stack.
我怎样才能解决这个问题?
9 回答
确保报告在
app_code
文件夹中初始化它的新实例,而不是初始化报告文档并在其中加载报告 .这对我有用
我也遇到了同样的问题我的问题是报告路径无效,可能你有同样的问题,检查Server.MapPath(“Reports / Sample.rpt”)返回有效路径?
您需要修改.rpt文件中的两个属性:
Build Action 默认设置为"Embedded Resource" . 将其更改为“ Content ” .
Copy to Output 默认设置为"Do not copy" . 将其更改为“ Copy always ” .
重建,构建部署包和发布 . 完成!
注意:下面,术语“WebSite”指的是IIS中的实际网站节点,而不是网站中的虚拟目录 .
问题根本原因:应用程序无法访问"aspnet_client"文件夹 .
出现这种情况有几个原因:
由于SAP CR安装程序似乎在... \ inetpub \ wwwroot \文件夹中安装了aspnet_client文件夹,如果您的网站物理路径不是... \ inetpub \ wwwroot,您的应用程序将无法访问aspnet_client文件夹 .
如果将aspnet_client文件夹移动或删除到网站物理路径的顶层,则IIS应用程序将无法访问该文件夹 .
问题解决方案(适用于Windows Server 2008 R2)
转到服务器上的IIS管理器
展开运行应用程序的WebSite的树视图节点
查看网站节点下的级别,确保您看到"aspnet_client"文件夹 .
如果您确实看到了该文件夹,那么这个根本原因可能不是您的问题的原因 .
如果您没有看到该文件夹,请搜索服务器's hard drive for it and COPY it to the Web Site'的物理路径 .
在“网站”节点上单击鼠标右键,然后从弹出菜单中单击“刷新”
您现在应该直接在网站节点下的级别看到aspnet_client文件夹,并且应用程序中的报告应该可以正常工作 .
当我将网站转换为Web应用程序时,我遇到了这个问题 . 报告在我的开发机器上运行正常,但在服务器上运行不正常 . 然后我意识到服务器上缺少rpt文件!
默认情况下,报表文件被视为嵌入式资源,并且在Web应用程序发布时不会被复制 . 我只是单独更改了它们,重新发布了网站,一切都很顺利 .
如果我错误地在Crystal Reports设计器中打开了报告文件,我的报告加载也会失败 .
这个错误是一种真正的享受,并且似乎有许多可能的前因 . 幸运的是,我只浪费了一天的特殊变化:
ReportDocument.Load()
也会制作本地临时副本 . (这可能只是在来自网络驱动器位置的负载的情况下,我没有在本地负载的情况下测试它 . )如果发生加载的用户上下文没有权限在本地创建临时文件,
Load
将失败并出现同样非常无用的错误 .另外,我最后用Process Monitor诊断出来了 . 它也可能对你有所帮助 .
请确保您的报告rpt文件位于其原始文件夹中 . 在我将我的MVC网站“发布”到IIS之后,我首先得到了同样的错误 . 我没有意识到“发布”没有将rpt文件放入包中 .
将“Crystal报表引擎”重新安装到服务器
Build Action设置为“Content” .
它对我来说非常有用..!