首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何告诉System.Data.OracleClient使用64位Oracle驱动程序

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

Stack Overflow用户
提问于 2011-07-22 14:04:28
回答 2查看 24.8K关注 0票数 9

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

尝试加载Oracle库会抛出BadImageFormatException。在安装32位Oracle客户端组件时,在64位模式下运行时会出现此问题。

这是我尝试和失败的漫长旅程:

  1. 我试图安装Oracle win64。但是在安装过程中,它没有任何评论就崩溃了。
  2. 我遵循一个来自不同的SO线程的答案,尝试并解压instantclient-basic-windows.x64-11.2.0.2.0,并将包含二进制文件的文件夹放在windows路径变量中。不过,我仍然收到相同的错误消息(即使在重新启动之后)。
  3. 我遵循这个答案的“替代方式”,将oci.dll、orannzbb11.dll、 文件复制到我的网站项目的bin/文件夹中。还是同样的错误信息。
  4. 我尝试并将所有文件从即时客户端复制到该目录中,然后再试一次,但没有成功。
  5. 我安装了ODAC112021Xcopy,并将安装文件夹和bin文件夹放在windows路径变量中。没有成功。
  6. 我将我的希望寄托在这个答案上,并检查了注册表中的 DllPath (实际上应该与ODP.NET有关,而不是System.Data.OracleClient),并发现DllPath指向了ODAC的正确x64安装,因此,如果我的应用程序没有使用System.Data.OracleClient,它应该可以工作,但是由于它确实使用了System.Data.OracleClient,所以它仍然失败。
  7. 我搜索和堆栈飞越,但没有找到任何其他我已经提到的帖子。
  8. 我精心设计了这个问题,希望能从一个开明的用户那里得到任何有洞察力的建议。
  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版本的地方。也没有成功。

与此相关的是,我甚至尝试过强迫我的.NET应用程序进入32位模式,但没有成功,但这是另一回事。我需要一个前瞻性的解决方案,这意味着64位。

EN

回答 2

Stack Overflow用户

发布于 2011-07-26 14:38:10

您的#5应该已经工作了,但是您还需要设置ORACLE_HOME环境变量。我已经做了很多次了,包括最近使用的xcopy。请查看我在x拷贝安装方面的经验,并让我知道你得到什么样的额外错误。

在我的例子中,我将其设置为asp.net,但winforms甚至更容易。您可以打开cmd窗口,使用" set“命令设置路径和ORACLE_HOME环境变量,然后从同一个cmd窗口运行应用程序。一旦解决了bug,就可以使用Environment.SetEnvironmentVariable在代码中设置这些错误。

为了记录在案,我通过web服务处理所有业务逻辑,从而避免在客户端计算机上安装oracle客户端。这样,我只需要web服务器上的oracle组件。

票数 4
EN

Stack Overflow用户

发布于 2011-08-31 02:01:36

我和你有同样的问题。我通过Oracle论坛和这里的堆栈溢出找到了我的大部分答案。我不能张贴链接作为参考,但我可以给你一些东西来尝试。

  1. 还将OraOps11w.dll与其他Oracle文件一起包含在bin目录中。
  2. 转到项目属性\引用路径,根据项目使用的框架版本,将C:\Windows\Microsoft.NET\Framework64\v2.0.50727或C:\Windows\Microsoft.NET\Framework64\v4.0.30319添加到引用路径。
  3. **我不记得的模糊部分:删除C:\Windows\Microsoft.NET\Framework64\v2.0.50727或C:\Windows\Microsoft.NET\Framework64\v4.0.30319中的System.Data.OracleClient当前引用,并根据项目使用的框架版本将新引用添加到引用路径。

看看这个例外会不会消失。

微软在不久的将来将放弃对甲骨文数据提供商( ADO.NET)的支持。它目前通过.NET 4工作,但是开始测试本地Oracle驱动程序是个好主意。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6791205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档