【发布时间】:2010-01-18 13:44:39
【问题描述】:
我有一个方法可以加载 Crystal Reports 文件,设置适当的登录信息,然后生成 PDF。
ReportDocument rep = new ReportDocument();
rep.Load(...);
// Set table LogOnInfo
rep.ExportToStream(ExportFormatType.PortableDocFormat);
// Save the PDF to disk or return it as web request
这个确切的代码适用于两者
- 独立的 WPF 桌面应用程序
- 从 VS 启动的一个通过 Cassini 运行的 ASP.NET MVC 网站
但在将同一网站部署到 IIS7 时不起作用。它给出了一个相当无用的消息和堆栈跟踪。
尝试加载 Crystal Reports 运行时时出错。
水晶报表注册表 密钥权限不足或 Crystal Reports 运行时不是 正确安装。
请安装合适的水晶 可再分发的报告 (CRRedist*.msi),其中包含 Crystal Reports 运行时版本 (x86、x64 或 Itanium),即 必需的。请前往 http://www.businessobjects.com/support 了解更多信息。
异常详细信息:CrystalDecisions.CrystalReports.Engine.LoadSaveReportException:尝试加载 Crystal Reports 运行时时出错。
请注意,我使用的是 CR 2008 SP2,并且文件自 10.5 以来尚未命名为 CRRedist...,因此有人忘记在某处更新消息 :) Here is a list of all the CR runtimes.
那么为什么在上面列出的两种情况下运行引用相同程序集的相同代码会起作用,但在已部署的网站中却不起作用?
我发现this suggestion 为 IIS 用户授予对 temp 文件夹的写访问权限,而且 Crystal 运行时似乎确实在那里做了一些工作,但即使在给 IIS_IUSR 或 IIS AppPool\DefaultAppPool full 之后我仍然遇到相同的错误访问%TEMP%。
我还尝试更改应用程序池以使用我的帐户作为身份,但仍然收到相同的错误消息,因此我不相信这是权限问题。
【问题讨论】:
标签: iis iis-7 crystal-reports