部署到 IIS 时无法将 CrystalReports 设置为 运行

Can't get CrystalReports to run when deployed to IIS

我们有一个 ASP.NET c# 项目(Visual Studio 2015)。作为应用程序的一部分,我们包含了几个在 VS 2015 的 Crystal 插件中设计的固定 Crystal 报告。在本地开发机器上,我们可以 运行 使用这些报告没有问题下面的代码。

using CrystalDecisions.CrystalReports.Engine;
...
ReportDocument report = new ReportDocument();
TableLogOnInfo conInfo = new TableLogOnInfo();
conInfo.ConnectionInfo.UserID = Global.Config.GetValue("USERID");
conInfo.ConnectionInfo.Password = Global.Config.GetValue("PASSWORD");
conInfo.ConnectionInfo.DatabaseName = Global.Config.GetValue("DATABASENAME");
conInfo.ConnectionInfo.ServerName = Global.Config.GetValue("DATASOURCE");

report.Load(reportPath + name);
for (int i = 0; i < report.Database.Tables.Count; i++)
{
    report.Database.Tables[i].ApplyLogOnInfo(conInfo);
}

return new FileStreamResult(report.ExportToStream(ExportFormatType.PortableDocFormat), "application/pdf");

但是当我们部署到 Windows 2008 Server r2 机器上的 IIS 服务器时,在实例化 ReportDocument 对象时出现错误:

at CrystalDecisions.Shared.SharedUtils..cctor() : 
Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' or one of its dependencies. The system cannot find the file specified.

所有 CrystalDecisions.*.dll 都包含在已发布的应用程序中。我正在努力找出问题所在。

需要说明的是,我们没有使用 Crystal 查看器。我们只是想 运行 一份报告 (*.rpt) 并输出到 PDF 文件流。

听起来它与 Crystal 报告无关。

您需要部署 log4net 库。可能,您的应用程序使用它来注册日志(如发生异常)。

我从我的本地计算机复制了 log4net.dll 以克服第一个错误。显然,您还需要安装 crystal 运行时。但是运行时不会安装在 Windows 2008 r2 SP1 服务器上。注册某些 DLL 时失败。

我们能够安装旧版本 (CRRuntime_32bit_13_0_19)。但这与编译后的代码有问题。

我需要应用一些 Microsoft 更新才能最终安装 CRRuntime_32bit_13_0_23 运行时。安装此运行时后,一切正常。

文档不是很清楚。似乎也没有任何简单的方法可以找到适当运行时的先决条件列表。我不知道需要哪个 MS 更新。我刚刚安装了一堆。此服务器在此之前已锁定更新,因为它已经稳定了好几年。

经验教训。