操作系统:win7 64位旗舰版
Oracle 安装的是32位client
程序从前在xp机器上运行正常,重安win7 64位系统以后,出现如下错误
2013-05-09 05:13:13,610 [2820] ERROR SystemLog - 打开数据库出错
NHibernate.ADOException: cannot open connection ---> NHibernate.ADOException: Could not create connection from Driver ---> 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.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
在 System.Data.OracleClient.OracleConnection.Open()
在 NHibernate.Connection.DriverConnectionProvider.GetConnection()
--- 内部异常堆栈跟踪的结尾 ---
在 NHibernate.Connection.DriverConnectionProvider.GetConnection()
在 NHibernate.Impl.SessionFactoryImpl.OpenConnection()
--- 内部异常堆栈跟踪的结尾 ---
在 NHibernate.Impl.SessionFactoryImpl.OpenConnection()
在 NHibernate.Impl.SessionImpl.Connect()
在 NHibernate.Impl.SessionImpl.get_Connection()
解决办法 :将程序编译目标平台选为x86,问题解决。
以上解决办法仅作参考。