尝试加载Crystal Reports运行时时出现错误

12
我已经为客户维护了一个内部网站相当长的时间。 除了一些错误之外,该网站都按预期工作。 但突然出现了这个问题,以前从未出现过。 以下是我们使用的软件: - Windows Server 2008 R2,64位 - Visual Studio 2005作为首选IDE - ASP.net / C#用于网站 - .NET 2.0 - IIS,用于网站托管。 - CrystalReport10(从图片中可以看出)。 现在,我已经对此进行了一些研究,很多人建议将网站重新构建/发布为x86而不是任何CPU,并且很多人还建议重新安装64位CR等等。
但是,这种情况从未发生过,而且很少有人篡改服务器。我看不出为什么这个网站会突然停止在它部署的操作系统上运行,因为在我的时间以前,它就已经使用“混合平台”进行构建了。由于没有其他人使用该服务器,它怎么可能突然生成这样的错误呢?这不像是有人可以随便进去卸载东西 - 或许是Windows更新?

以下是我在C:\Windows\Assembly中找到的屏幕截图:

Windows Server 2008

奇怪的是,我在本地测试开发PC上也发现了同样的问题,除此之外还有另一个程序的一些13版本部分。该网站在我的本地测试开发上运行良好,但在实际服务器上却不行。在我认为可能是服务器缺少必要的东西之前,我还记得实际服务器上的任何内容都已经存在一段时间了,并且只有现在才出现了错误。
以下是完整的错误信息:

应用程序中的服务器错误。

在尝试加载Crystal Reports运行时时发生错误。

要么Crystal Reports注册表键权限不足,要么Crystal Reports运行时未正确安装。

请安装包含所需的Crystal Reports运行时版本(x86、x64或Itanium)的适当的Crystal Reports可再发行版(CRRedist*.msi)。 有关更多信息,请访问http://www.businessobjects.com/support。 描述:执行当前Web请求时发生未处理的异常。 请查看堆栈跟踪以获取有关错误及其在代码中的起源位置的更多信息。

异常详细信息: CrystalDecisions.CrystalReports.Engine.LoadSaveReportException:在尝试加载Crystal Reports运行时时发生错误。

要么Crystal Reports注册表键权限不足,要么Crystal Reports运行时未正确安装。

请安装包含所需的Crystal Reports运行时版本(x86、x64或Itanium)的适当的Crystal Reports可再发行版(CRRedist*.msi)。 有关更多信息,请访问http://www.businessobjects.com/support

源错误:

执行当前Web请求时生成了未处理的异常。 可以使用下面的异常堆栈跟踪标识异常的起源和位置信息。

堆栈跟踪:

[LoadSaveReportException:在尝试加载Crystal Reports运行时时发生错误。

要么Crystal Reports注册表键权限不足,要么Crystal Reports运行时未正确安装。

请安装包含所需的Crystal Reports运行时版本(x86、x64或Itanium)的适当的Crystal Reports可再发行版(CRRedist*.msi)。 有关更多信息,请访问http://www.businessobjects.com/support。]
CrystalDecisions.CrystalReports.Engine.ReportDocument.CheckForCrystalReportsRuntime() +379 CrystalDecisions.CrystalReports.Engine.ReportDocument..cctor() +248

[TypeInitializationException:'CrystalDecisions.CrystalReports.Engine.ReportDocument'的类型初始值设定项引发了异常。]
CrystalDecisions.CrystalReports.Engine.ReportDocument..ctor() +0
pages_reports_ApplicationHistoryRpt.GenerateReport() +163
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +115
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +140
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +29
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2981

-------------------------------------------------------------------------------- 版本信息:Microsoft .NET Framework版本:2.0.50727.5448; ASP.NET版本:2.0.50727.5420

我希望有人能帮助我解决这个问题。

谢谢。


供您参考:在我的情况下,我有一个桌面客户端(.Net 4.0,C#),使用CR10运行时。在64位Windows(7/8)上,我必须安装32位和64位运行时,并以x86模式部署我的应用程序才能使其正常工作。 - Ken Cheung
我会尽力部署一个64位/32位运行时环境 - 因为我只是维护程序,甚至没有修改服务器本身的权限。就我的Web应用程序而言,我没有看到在x86模式下部署它的选项 - 它已经使用'Mixed Platforms'代替了相当长的一段时间。那些之前在实时服务器上的版本(直到现在都可以工作)很可能也在使用'Mixed Platforms'。这似乎只会使这个错误更加奇怪。 - zack_falcon
5个回答

11

您尝试进入IIS,并在Web站点所运行的应用程序池的“高级设置”中将“启用32位应用程序”设置为“True”吗?

我必须为我在Web应用程序中引用的Crystal Reports 2008(12.0.2000.0)版本执行此操作,因为Crystal运行时本身只有32位。


这对我有用(3年前):http://stackoverflow.com/questions/8903210/crystal-report-redistributable-for-windows-server-2008/8989531#8989531 - Allende
虽然很老,但这对我有帮助并且有效,谢谢。 - N Khan

2
如果您以x86模式部署应用程序,它将正常工作。我已经遇到过这个问题。
此外,应该使用.NET框架而不是.NET客户端框架。

我会尝试使用“Any CPU”和“Mixed Platforms”这两个选项来部署我的Web应用程序,但据我所知,这似乎是唯一的选择。该网站在相当长的一段时间里一直使用“Mixed Platforms”进行开发、构建和发布 - 而且曾经是有效的。 - zack_falcon
它适用于某些报告,但不是所有报告。在我的情况下,当我向程序添加越来越多的报告时,我已经从“任何 CPU”更改为单独的“x86 | x64”可执行文件,最终仅使用“x86”;此外,现在我必须在所有机器上安装32bit.msi以及64位Windows上的64bit.msi。(仅在64位Windows上安装32bit.msi无法正常工作)。 - Ken Cheung

0

将一个C# .Net web应用程序从Windows 2003迁移到2012时,我遇到了相同的错误。

检查系统是否安装了Adobe Reader。安装Adobe Reader后,Web应用程序开始显示报告。


0

我的建议是:

祝你好运!


0

我刚刚在项目属性 > 构建中检查了偏好32位,它起作用了。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接