我正在尝试运行System.Data.OracleClient
在 Win7 x64 工作站上使用的 .NET 应用程序。工作站安装了 32 位 Oracle 客户端,导致以下错误消息:
尝试加载 Oracle 客户端库会引发 BadImageFormatException。在安装了 32 位 Oracle 客户端组件的 64 位模式下运行时会出现此问题。
所以这是我漫长的尝试和失败之旅:
- 我尝试安装 Oracle 客户端win64_11gR2_client。但是在设置过程中它崩溃了,没有任何评论。
- 我遵循来自不同 SO 线程的答案,尝试并提取了instantclient-basic-windows.x64-11.2.0.2.0,并将包含二进制文件的文件夹放在 windows PATH 变量中。我仍然收到相同的错误消息(即使在重新启动后)。
- 我按照这个答案的“替代方式”,将文件oci.dll、orannzsbb11.dll和oraociei11.dll 复制到我的网站项目的 bin/ 文件夹中。仍然是相同的错误消息。
- 我尝试将所有文件从即时客户端复制到该目录并再次尝试,但没有成功。
- 我安装了ODAC112021Xcopy_x64.zip并将安装文件夹和 bin 文件夹放在 windows PATH 变量中。没有成功。
- 我把希望寄托在这个答案上,并查看了注册表中的DllPath(实际上应该与 ODP.NET 相关,而不是
System.Data.OracleClient
),发现 DllPath 指向正确的 x64 安装的 ODAC,所以,如果我的应用程序不是usingSystem.Data.OracleClient
,它应该可以工作,b 但由于它确实使用了它,它仍然失败。 - 我用谷歌搜索和stackoverflew,但没有找到我已经提到的帖子的任何其他内容。
- 我精心设计了这个 SO 问题,希望能从有见识的 SO 用户那里得到任何有见地的建议。
从 b_levitt 得到第一个答案后,我尝试在 Global.asax 中添加以下行
Application_Start
:Environment.SetEnvironmentVariable("ORACLE_HOME", @"C:\OracleProducts\Odac-11.2.0.2.1-x64"); Environment.SetEnvironmentVariable("PATH", @"C:\OracleProducts\Odac-11.2.0.2.1-x64;C:\OracleProducts\Odac-11.2.0.2.1-x64\bin");
C:\OracleProducts\Odac-11.2.0.2.1-x64 是我安装 ODAC 64 位 xcopy 版本的位置。也没有成功。
在相关的说明中,我什至试图强制我的 .NET 应用程序进入 32 位模式但没有成功,但这是另一回事。我需要一个具有前瞻性的解决方案,这意味着 64 位。