日期:2014-05-17  浏览次数:20371 次

尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运
如题,我用的Oracle是32位的,VS是64位的,怎么修改


运行WebService时,提示

System.InvalidOperationException: 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。 ---> System.BadImageFormatException: 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
  在 System.Data.Common.UnsafeNativeMethods.OCILobCopy2(IntPtr svchp, IntPtr errhp, IntPtr dst_locp, IntPtr src_locp, UInt64 amount, UInt64 dst_offset, UInt64 src_offset)
  在 System.Data.OracleClient.OCI.DetermineClientVersion()
  --- 内部异常堆栈跟踪的结尾 ---
  在 System.Data.OracleClient.OCI.DetermineClientVersion()
  在 System.Data.OracleClient.OracleInternalConnection.OpenOnLocalTransaction(String userName, String password, String serverName, Boolean integratedSecurity, Boolean unicode, Boolean omitOracleConnectionName)
  在 System.Data.OracleClient.OracleInternalConnection..ctor(OracleConnectionString connectionOptions)
  在 System.Data.OracleClient.OracleConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
  在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
  在 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
  在 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
  在 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
  在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
  在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
  在 System.Data.OracleClient.OracleConnection.Open()
  在 WebService.HelloWorld()



------解决方案--------------------
VS自带的WebServer只有32位的,你只能以32位运行,即使你的VS里面编译目标是64位的,

注意:发布到iis,可以以64位运行,你需要安装64位的oracle连接客户端。如果没有,你的程序必须在VS里面编译成x86