尝试加载Oracle客户端库抛出BadImageFormatException IIS System.Data.OracleClient

时间:2017-05-19 08:44:04

标签: asp.net oracle iis com system.data.oracleclient

故事:我的网站在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。是否有一种解决方法可以在应用程序池中启用32Bit时运行我的System.Data.OracleClient,而不尝试将整个应用程序迁移到Oracle Data Access?

2 个答案:

答案 0 :(得分:0)

我认为实现这一目标的唯一方法是将您的Web应用程序构建为32位,这样就可以使用32位客户端。然后一切都是32位。 确保您的Web应用程序为x86构建不要构建为AnyCpu ,因为它将默认为目标平台的x64。

答案 1 :(得分:0)

System.Data.OracleClient年龄为deprecated,不应再使用了。它仅适用于x86(32位),当Microsoft停止开发System.Data.OracleClient时,64位Windows并不常见。

最好使用Oracle的ODP.NET提供程序,它适用于x86和x64。

同时查看此说明:BadImageFormatException. This will occur when running in 64 bit mode with the 32 bit Oracle client components installed