【发布时间】:2011-10-11 02:19:13
【问题描述】:
我正在尝试在 Win7 x64 工作站上运行使用 System.Data.OracleClient 的 .NET 应用程序。工作站安装了 32 位 Oracle 客户端,导致以下错误消息:
尝试加载 Oracle 客户端库引发了 BadImageFormatException。在安装了 32 位 Oracle 客户端组件的 64 位模式下运行时会出现此问题。
这是我漫长的尝试和失败之旅:
- 我尝试安装 Oracle 客户端 win64_11gR2_client。但是在设置过程中它崩溃了,没有任何评论。
- 我关注answer from a different SO thread,尝试提取instantclient-basic-windows.x64-11.2.0.2.0,并将包含二进制文件的文件夹放入Windows PATH 变量中。我仍然收到相同的错误消息(即使在重新启动后)。
- 我按照this answer 的“替代方式”复制了文件oci.dll、orannzsbb11.dll、和oraociei11.dll 进入我的网站项目的 bin/ 文件夹。还是一样的错误信息。
- 我尝试将即时客户端中的所有文件复制到该目录并再次尝试,但没有成功。
- 我安装了ODAC112021Xcopy_x64.zip,并将安装文件夹和bin文件夹放在windows PATH变量中。没有成功。
- 我把希望寄托在 this answer 上,并查看了注册表中的 DllPath(实际上应该与 ODP.NET 相关,而不是
System.Data.OracleClient),发现 DllPath 指向正确的 x64 安装 ODAC,因此,如果我的应用程序没有使用System.Data.OracleClient,它应该可以工作,b 但由于它确实使用了它,它仍然失败。 - 我在 Google 上搜索和 stackoverflew,但没有找到我已经提到的帖子的其他任何内容。
- 我精心设计了这个 SO 问题,希望能从有见识的 SO 用户那里得到任何有见地的建议。
-
从 b_levitt 得到第一个答案后,我尝试在
Application_Start的 Global.asax 中添加以下行: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 版本的位置。 也没有成功。
在相关说明中,我什至尝试过force my .NET app into 32bit mode without success,但那是另一回事。我需要一个具有前瞻性的解决方案,即 64 位。
【问题讨论】:
标签: windows-7 .net-4.0 64-bit oracle11gr2 system.data.oracleclient