我们在c#中拥有一个ASP.NET项目(Visual Studio 2015)。作为应用程序的一部分,我们在VS 2015的Crystal插件中包含了几个罐装的Crystal Reports。在本地开发机上,我们可以使用下面的代码毫无问题地运行报告。
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 Viewer。我们只是试图运行报告(* .rpt)并输出到PDF文件流。
答案 0 :(得分:0)
类似的声音与Crystal Reports无关。
您需要部署log4net库。可能是您的应用程序使用它来注册日志(例如发生异常)。
答案 1 :(得分:0)
我从本地计算机复制了log4net.dll,以克服第一个错误。显然,您还需要安装Crystal运行时。但是运行时不会安装在Windows 2008 r2 SP1服务器上。注册某些DLL时失败。
我们能够安装旧版本(CRRuntime_32bit_13_0_19)。但这与编译后的代码有关。
我需要应用一些Microsoft更新,才能最终安装CRRuntime_32bit_13_0_23运行时。一旦安装了该运行时,一切都很好。
文档不是很清楚。似乎也没有任何简单的方法来找到适当运行时的先决条件列表。我不知道需要哪个MS Update。我刚刚安装了一堆。由于此服务器已经稳定了好几年,因此它在此之前已被锁定以进行更新。
经验教训。