我正在尝试运行在Win7 x64工作站上使用System.Data.OracleClient
的.NET应用程序。工作站安装了32位Oracle客户端,这会导致以下错误消息:
尝试加载Oracle客户端库会引发BadImageFormatException。在安装了32位Oracle客户端组件的64位模式下运行时会发生此问题。
所以这是我漫长的尝试和失败之旅:
System.Data.OracleClient
)并看到了DllPath指向正确的ODAC x64安装,因此,如果我的应用程序没有使用System.Data.OracleClient
,它应该可以工作,但是因为它确实使用了它,它仍然失败。在从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位。
答案 0 :(得分:4)
你的#5应该有效,但你还需要设置ORACLE_HOME环境变量。我已经做了很多次,包括最近使用的xcopy安装。请查看my experience with the xcopy install,告诉我您会收到哪些其他错误。
在我的情况下,我是为asp.net设置的,但winforms更容易。您可以打开cmd窗口,使用“set”命令设置PATH和ORACLE_HOME环境变量,然后从同一个cmd窗口运行您的应用程序。一旦得到错误,就可以使用Environment.SetEnvironmentVariable在代码中设置这些错误。
为了记录,我确实避免通过Web服务处理所有业务逻辑来在客户端计算机上安装oracle客户端。这样我只需要Web服务器上的oracle组件。
答案 1 :(得分:1)
我遇到了同样的问题。我通过Oracle论坛和stackoverflow找到了我的大部分答案。我不能发布链接供参考,但我可以给你一些尝试。
查看异常是否消失。
仅供参考,微软将在不久的将来放弃Oracle数据提供商(在ADO.NET中)的支持。它目前可以通过.NET 4运行,但最好开始测试本机Oracle驱动程序。