本地运行是好的(VS直接F5运行,没有报错,数据可以出来),但是发布后就是报错了(同一台电脑上,我直接把解决方案拿到服务器运行了)。
之前本地运行的时候报错了:
尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
找同事帮忙解决的,解决方法是 把64位客户端指向32位客户端。具体的我也不清楚,本人对oracle数据库不怎么会用。
现在问题出来了,发布之后就报错了。
IIS上面已经启动了32位应用程序,
.net版本为2.0
试着改下应用程序池
已经启动了。。还是这样
@二月二十号: (我搜索了下,你的服务器是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就能连接上数据库了