【发布时间】:2017-05-19 17:34:26
【问题描述】:
故事:我的网站在 System.Data.OraceClient 中运行(由于各种技术原因,我无法更改 dll)。现在,我有一个第三方 DLL 集成到我的网站,它是 32 位的。当我从 Visual Studio 运行时,一切运行良好,但是当我将其发布到 IIS 时,它会引发上述错误。
现在的解决方案是: 在 IIS 应用程序池中启用 32 位
启用 32 位后,第三方 DLL 将开始工作,System.Data.Oracle client fails with BadImageFormat exception
在 IIS 应用程序池中禁用 32 位。
当 32 位被禁用时,System.Data.OracleClient 将开始工作,第三方 DLL 将失败并出现以下错误。
检索具有 CLSID {xxxxx} 的组件的 COM 类工厂 由于以下错误而失败:xxxxxx 类未注册
-- 此类已注册。这就是为什么它在启用 32 位时工作的原因。
现在,我的情况是一次只有一个 dll 可以工作。在应用程序池中启用 32 位时,是否有一种解决方法可以让我的 System.Data.OracleClient 运行,而无需尝试将我的整个应用程序迁移到 Oracle Data Access?
【问题讨论】:
-
我只是在这里尝试一下,但是... Web 服务器上安装了哪个版本的 Oracle 客户端(是完整客户端还是即时客户端)?它是 32 位还是 64 位?
-
它来自 4.5.1 的 .Net 程序集。 dll的版本是4.0,我相信是64位的。
标签: asp.net oracle iis com system.data.oracleclient