我正在尝试运行一个.NET应用程序,它在Win7 x64工作站上使用System.Data.OracleClient。工作站安装了32位Oracle客户端,这将导致以下错误消息:
尝试加载Oracle库会抛出BadImageFormatException。在安装32位Oracle客户端组件时,在64位模式下运行时会出现此问题。
这是我尝试和失败的漫长旅程:
System.Data.OracleClient),并发现DllPath指向了ODAC的正确x64安装,因此,如果我的应用程序没有使用System.Data.OracleClient,它应该可以工作,但是由于它确实使用了System.Data.OracleClient,所以它仍然失败。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位。
发布于 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组件。
发布于 2011-08-31 02:01:36
我和你有同样的问题。我通过Oracle论坛和这里的堆栈溢出找到了我的大部分答案。我不能张贴链接作为参考,但我可以给你一些东西来尝试。
看看这个例外会不会消失。
微软在不久的将来将放弃对甲骨文数据提供商( ADO.NET)的支持。它目前通过.NET 4工作,但是开始测试本地Oracle驱动程序是个好主意。
https://stackoverflow.com/questions/6791205
复制相似问题