故事:我的网站在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?
答案 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。