gpt4 book ai didi

windows-7 - 如何告诉 System.Data.OracleClient 使用 64 位 Oracle 驱动程序

转载 作者:行者123 更新时间:2023-12-02 18:53:56 25 4
gpt4 key购买 nike

我正在尝试在 Win7 x64 工作站上运行使用 System.Data.OracleClient 的 .NET 应用程序。工作站安装了 32 位 Oracle 客户端,导致出现以下错误消息:

Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed.

所以这是我漫长的尝试和失败之旅:

  1. 我尝试安装 Oracle 客户端 win64_11gR2_client 。但在设置过程中它崩溃了,没有任何评论。
  2. 我关注了answer from a different SO thread ,尝试并提取了 instantclient-basic-windows.x64-11.2.0.2.0 ,并将包含二进制文件的文件夹放入 Windows PATH 变量中。但我仍然收到相同的错误消息(即使在重新启动后)。
  3. 我遵循 this answer 中的“替代方式”并将文件 oci.dll、orannzsbb11.dll oraociei11.dll 复制到我的网站项目的 bin/文件夹中。还是一样的错误信息。
  4. 我尝试将即时客户端中的所有文件复制到该目录中,然后重试,但没有成功。
  5. 我安装了 ODAC112021Xcopy_x64.zip 并将安装文件夹和bin文件夹放入Windows PATH变量中。没有成功。
  6. 我把希望寄托在 this answer并检查了注册表中的 DllPath(实际上应该与 ODP.NET 相关,而不是 System.Data.OracleClient),并看到 DllPath 指向正确的 x64安装 ODAC,因此,如果我的应用程序没有使用 System.Data.OracleClient,它应该可以工作,但由于它确实使用了它,所以它仍然失败。
  7. 我在 google 和 stackoverflew 上进行了搜索,但除了我已经提到的帖子之外,没有找到任何其他内容。
  8. 我精心设计了这个 SO 问题,希望能从开明的 SO 用户那里得到任何有见地的建议。
  9. 从 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 位。

最佳答案

您的 #5 应该可以工作,但您还需要设置 ORACLE_HOME 环境变量。我已经这样做过很多次了,包括最近使用您正在使用的 xcopy 安装。请查看my experience with the xcopy install并让我知道您遇到了哪些额外错误。

就我而言,我是为 asp.net 设置它,但 winforms 更容易。您可以打开 cmd 窗口,使用“set”命令设置 PATH 和 ORACLE_HOME 环境变量,然后从同一 cmd 窗口运行您的应用程序。一旦解决了错误,您就可以使用Environment.SetEnvironmentVariable 在代码中进行设置。

郑重声明,我确实避免在客户端计算机上安装 Oracle 客户端,而是通过 Web 服务处理所有业务逻辑。这样我只需要 Web 服务器上的 oracle 组件。

关于windows-7 - 如何告诉 System.Data.OracleClient 使用 64 位 Oracle 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6791205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com