BadImageFormatException. Cela se produit lorsque vous exécutez en mode 64 bits avec la version 32 bits du client Oracle installé les composants

J'obtiens ce message d'erreur lors de mon .Net application sont une tentative de connexion à la base de données oracle.

Le message d'erreur indique que This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed.. Mais j'ai fait en sorte nombre de fois que le client a été installé dans x64 peu pas 32.

Date Time: 6/8/2014 10:57:55 AM: System.InvalidOperationException: Attempt to load Oracle client libraries threw BadImageFormatException.  This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed. ---> System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
       at System.Data.Common.UnsafeNativeMethods.OCILobCopy2(IntPtr svchp, IntPtr errhp, IntPtr dst_locp, IntPtr src_locp, UInt64 amount, UInt64 dst_offset, UInt64 src_offset)
       at System.Data.OracleClient.OCI.DetermineClientVersion()
       --- End of inner exception stack trace ---
       at System.Data.OracleClient.OCI.DetermineClientVersion()
       at System.Data.OracleClient.OracleInternalConnection.OpenOnLocalTransaction(String userName, String password, String serverName, Boolean integratedSecurity, Boolean unicode, Boolean omitOracleConnectionName)
       at System.Data.OracleClient.OracleInternalConnection..ctor(OracleConnectionString connectionOptions)
       at System.Data.OracleClient.OracleConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
       at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
       at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
       at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
       at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
       at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
       at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
       at System.Data.OracleClient.OracleConnection.Open()
       at CustomizedSetupInstaller.Runscripts.InitializeDBObjects(String connectionString, String dbProvider)
  • Vous êtes à l'aide de System.Data.OracleClient. Cet espace de noms est obsolète et sera supprimée dans une future version de .NET. Peut-être que vous utilisez une version 32 bits de qui? Il ne fait pas partie de l'Oracle client, donc si vous utilisez une version 32 bits ou 64 bits du client Oracle n'est pas pertinent. Idéalement, vous devriez être en utilisant Oracle.DataAccess (ou Oracle.ManagedDataAccess) à la place.
  • Petite erreur: System.Data.OracleClient est juste le Fournisseur, il utilise également un Client Oracle qui doit correspondre à l'architecture. Seulement Oracle.ManagedDataAccess n'a pas besoin d'un surplus de client Oracle installé. Peut-être que le Client Oracle est de 64 bits, mais votre demande est en 32 bits, cela ne fonctionne pas non plus. Il est possible d'installer les deux versions 32 bits et 64 bits Oracle client sur la même machine
InformationsquelleAutor Maven | 2014-06-08