尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题

网上的解决方案很多,这里总结一下

一:修改项目属性

原网页http://blog.itpub.net/29676279/viewspace-1181755/

将项目配置改为:Any CPU


/本文作者这次是这样搞定的大笑


二:修改权限

原网页http://www.cnblogs.com/joey0210/archive/2012/08/15/2640248.html

加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。“。这个大概是说asp.net 程序不应该是用32的客户端去访问64位的数据库。但是装了64的oracle 不就相当宇装了64位的客户端吗?装的那个轻量级的32位客户端只是方便pl/sql来访问oralce数据库的。这个问题网上给出了很多回答。大多是,改项目的属性里的生成选项里的目标平台:改为x86.意识是把项目当成32位运行。每个项目都照着改了,还是不管用。网上还有说,把网站项目属性里的web项里的服务器改成iis不使用vs自带的web deleloper ment 服务,应为它的进程为webDe.webServer.exe 是一个32位的进程,反正说了很多。这个方法还是可以。你改完后,项目确实可以运行,并访问oracle64位数据库了。但是我个人总觉得这种方法很麻烦。而且这样你的本地iis里在你每建一个访问oracle数据的项目时,iis里就会多一个项目,而且这样也不稳定时常会报一些奇怪的错误。最后本来打算装回32位系统的,后边在网上逛逛,自己静下心来想想...

最后我发现是不是那个轻量级的包不行啊!最后还是把那个32位的oracle client安装包执行安装了下,安装时选的管理员。而且以前遇到过asp.net连不上oracle,是oracle安装文件夹的权限问题,所以我又对oracle所在的文件夹加netservices用户完全控制的权限。再重启, OK!搞定,程序居然能够连上了。。。。其实我自己也不知道是哪里的问题,到底是那个轻量级的包不行呢!还是那个权限问题...总之这样就好了。就此记录一下

2013-07-07 Note:今天还是同样的问题,经过再次的实验,证明是那个 轻量级的客户端包不行,一定要是那个安装版的,安装版的安装后的目录里面比那个轻量包解压后的目录里面要多出很多文件,由此可见,那个轻量包里面的oci.dll文件解决 pl/sql 连64位oracle的问题可以,但是咱C#程序要连64位oracle,还是得装那个安装版的客户端,可以不用装Administrator选项,默认客户端选项也就一百多兆。

之前按照这个方案,好像利用管理员权限登陆VS2010就莫名其妙的可以了,不过这次这个方法没有解决

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页