首页 新闻 会员 周边 捐助

关于Oracle数据库的问题

0
悬赏园豆:50 [已解决问题] 解决于 2015-09-06 11:46

本地运行是好的(VS直接F5运行,没有报错,数据可以出来),但是发布后就是报错了(同一台电脑上,我直接把解决方案拿到服务器运行了)。

之前本地运行的时候报错了:

尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
找同事帮忙解决的,解决方法是 把64位客户端指向32位客户端。具体的我也不清楚,本人对oracle数据库不怎么会用。
现在问题出来了,发布之后就报错了。


问题补充:

IIS上面已经启动了32位应用程序,

.net版本为2.0

二月二十号的主页 二月二十号 | 初学一级 | 园豆:38
提问于:2015-09-01 16:18
< >
分享
最佳答案
0

试着改下应用程序池

收获园豆:50
稳稳的河 | 老鸟四级 |园豆:4216 | 2015-09-01 16:22

已经启动了。。还是这样

二月二十号 | 园豆:38 (初学一级) | 2015-09-01 16:22

@二月二十号: (我搜索了下,你的服务器是64位,试试下面的方案)

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

错误原因是原来WinXP机子上所安装的OracleInstantClient是32位,所以编译的程序所用的OracleClient也是32位的,从而导致兼容问题。当然,如果在64位操作系统上重新安装64位的Oracle客户端再重新编译程序也是能解决问题的。这里我们介绍一种简单的方法来移植程序。

实际上,System.Data.OracleClient所指向的是PATH环境变量下的oci.dll。因此,我们只要让程序能够找到64位的oci.dll就可以了。方法如下:

1. 下载instantclient-basic-win-x86-64-11.1.0.7.0.zip,并解压,如C:\instantclient-basic-win-x86-64-11.1。

2. 在系统的环境变量PATH中加入以上路径。

之后再运行程序,程序会依照PATH路径寻找oci.dll,如果遇到32位的oci.dll会自动略过,找到64位的oci.dll就能连接上数据库了

稳稳的河 | 园豆:4216 (老鸟四级) | 2015-09-01 16:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册