故事:我的网站运行在System.Data.OraceClient中(由于各种技术原因,我不能更改dll )。现在,我有一个第三方DLL集成到我的网站,这是32位。当我从Visual运行时,一切都运行得很完美,但是当我将它发布到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位,而不尝试将整个应用程序迁移到Oracle,那么是否有办法使我的System.Data.OracleClient运行?
发布于 2017-05-19 09:32:41
我认为实现这一点的唯一方法是将您的web应用程序构建为32位,这样就让它使用32位客户端。那么一切都是32位。确保您的Web应用程序是为 x86构建的。不构建为AnyCpu,因为这将默认为目标平台的x64。
发布于 2017-05-19 09:34:26
System.Data.OracleClient是很长时间以来的已弃用,不应该再使用了。它只适用于x86 (32位),当时微软停止了System.Data.OracleClient 64位Windows的开发,这还不是很普遍。
最好使用来自甲骨文的ODP.NET提供程序,它可以用于x86和x64。
还请检查以下说明:BadImageFormatException。这将在安装了32位Oracle客户端组件的64位模式下运行时发生。
https://stackoverflow.com/questions/44065344
复制相似问题