尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
Posted Young_汨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。相关的知识,希望对你有一定的参考价值。
本机环境 win10 64位系统,vs2013 32bit 版本,Oracle 安装在本机包括服务端和客户端都是 64bit 的
在测试用.net 连接Oracle 数据库的时候,总是出现以上异常,找寻众多解决方法,如修改web 项目平台为x86 ,或者使用IIS调试等等,我觉得都不是办法,最后发现最好的一种解决方案如下:
下载 instantclient_11_2.zip 文件包,解压后,可以放在oracle安装路径后者其他地方都行
在系统的环境变量path中,将OracleInstantClient的路径设置在oracle的路径之前就可以了,这正是安装版和解压版的区别所在(系统变量),将 D:\app\instantclient_11_2 放在Path中 Oracle路径的前面,完美解决
注意:Path 中设置的 路径一定要放在oracle 的路径前面, 记得修改 instantclient_11_2 文件夹E:\app\instantclient_11_2\network\ADMIN\tnsnames.ora 文件里面的配置信息
tnsnames.ora 文件:
1 # TNSNAMES.ORA Network Configuration File: C:\oracle\ora90\network\admin\tnsnames.ora 2 # Generated by Oracle configuration tools. 3 4 #sample 5 6 #DATABASENAME = 7 # (DESCRIPTION = 8 # (ADDRESS_LIST = 9 # (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) 10 # ) 11 # (CONNECT_DATA = 12 # (SERVICE_NAME = servicename) 13 # ) 14 # ) 15 16 orcl= 17 (DESCRIPTION = 18 (ADDRESS_LIST = 19 (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT =1521)) 20 ) 21 (CONNECT_DATA = 22 (SERVICE_NAME =orcl) 23 ) 24 )
测试代码如下:
1 public class SqlHelper 2 { 3 private static string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["connStr"].ToString(); 4 public static DataTable Query(string sql) 5 { 6 DataTable dt = new DataTable(); 7 using (OracleConnection conn = new OracleConnection(connStr)) 8 { 9 conn.Open(); 10 OracleCommand cmd = new OracleCommand(sql,conn); 11 OracleDataAdapter adapter = new OracleDataAdapter(cmd); 12 adapter.Fill(dt); 13 return dt; 14 } 15 } 16 }
配置文件 config
1 <configuration> 2 <connectionStrings> 3 <add name="connStr" connectionString="Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)
(HOST = localhost)(PORT =1521)))(CONNECT_DATA =(SERVICE_NAME =orcl)));user=***; password=******;
persist security info=false;Min Pool Size=10;Max Pool Size=100;Pooling=true;" />
<!--<add name="connStr" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)));User Id=***;Password=***;"/>--> 4 </connectionStrings> 5 <system.web> 6 <compilation debug="true" targetFramework="4.5" /> 7 <httpRuntime targetFramework="4.5" /> 8 </system.web> 9 10 </configuration>
以上是关于尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。的主要内容,如果未能解决你的问题,请参考以下文章
尝试加载Oracle客户端库时引发BadImageFormatException
尝试加载 Oracle 客户端库时引发 BadImageFormatException。问题记录
再次解决 尝试加载 Oracle 客户端库时引发 BadImageFormatException
尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
报错:尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。