【问题标题】:TypeInitializerException thrown by ReportDocument constructorReportDocument 构造函数抛出的 TypeInitializerException
【发布时间】:2014-08-10 19:07:48
【问题描述】:

我有一个 ASP .NET Web 应用程序,它引用了来自 32 位 Crystal Reports 运行时的程序集。 (从 CRRedist2008_x86.msi 安装) 已部署它的服务器具有 64 位 Crystal Reports 运行时。 包含 CrystalReportViewer 的表单会引发以下异常:

System.TypeInitializationException:类型初始化器 'CrystalDecisions.CrystalReports.Engine.ReportDocument' 抛出了一个 例外。 ---> System.UnauthorizedAccessException:检索 COM 具有 CLSID 的组件的类工厂 {5FF57840-5172-4482-9CA3-541C7878AE0F} 由于以下原因而失败 错误:80070005。在 CrystalDecisions.CrystalReports.Engine.ReportDocument..cctor() --- 结束 内部异常堆栈跟踪 --- 在 CrystalDecisions.CrystalReports.Engine.ReportDocument..ctor() 在 [qualifiedFormName]_Load(Object sender, EventArgs e)

虽然我意识到使开发环境与运行时环境相同是理想的解决方案,但我希望有一些方法可以解决这个问题,而无需升级开发环境。

在服务器上的 web.config 中更新对 Crystal Reports 程序集的引用是否有效?

【问题讨论】:

    标签: asp.net .net crystal-reports 32bit-64bit


    【解决方案1】:
    • 打开 Windows 注册表 (Regedit.exe)
    • 搜索5FF57840-5172-4482-9CA3-541C7878AE0F
    • 您应该找到一个密钥,展开它并转到每个子节点,直到找到安装路径。
    • 转到该路径(通常是 C:\Program ...\Business Objects...\bin...)
    • 授予 ASP .NET、IIS 工作进程、匿名 Web 用户进程帐户的完全权限

      你应该很高兴。

    【讨论】:

    • 谢谢!由于我没有直接访问服务器的权限,我可能应该请托管机构的技术团队这样做。
    • 如果我错了,请纠正我,但托管机构不会反对在共享服务器上授予上述权限吗?
    • 您对这种方法的受限权限是正确的。对我们来说幸运的是,我们在开发人员机器上遇到了这个问题,而不是在我们的服务器上。但即使它发生在服务器上,我们也有完全的访问权限,因为它是一个本地云。 Cloud Azure 平台中提出了有关权限和高级服务器控制的类似问题。这是创建 Azure 网站(您无法控制运行它的 VM)与创建安装了 IIS 的 Azure 虚拟 PC 之间的主要区别。
    猜你喜欢
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 2011-11-04
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    相关资源
    最近更新 更多