47 votes

Impossible de charger le fichier ou l'assemblage "Oracle.DataAccess" ou l'une de ses dépendances.

J'essaie d'exécuter cette application web. Je continue à obtenir cette erreur "Impossible de charger le fichier ou l'assemblage "Oracle.DataAccess" ou l'une de ses dépendances. Une tentative a été faite pour charger un programme dont le format est incorrect." Détails de l'exception : System.BadImageFormatException. "Impossible de charger le fichier ou l'assemblage "Oracle.DataAccess" ou l'une de ses dépendances. Une tentative a été faite pour charger un programme dont le format est incorrect." Voici les choses que j'ai déjà essayées.

  1. remplacement de toutes les dll oracle par des dll oracle 32 bits, c'est-à-dire 2.112.3.0

J'ai un client 32 bits installé sur une machine 64 bits. Le système d'exploitation est Windows 7.

  1. compiler chaque projet individuellement. J'ai supprimé toutes les dll des fichiers dépendants d'Oracle et j'ai ajouté les dll 2.112.3.0 individuellement, puis j'ai compilé chaque projet.

  2. Enregistrez la dll 32 bit sur GAC en utilisant cette déclaration gacutil /i %ORA_HOME4 \odp.net\bin\4\Oracle.DataAccess.dll

gacutil /i %ORA_HOME4% (en anglais) \asp.net\bin\4\oracle.web.dll

pour les deux déclarations ci-dessus, j'ai copié le gacutil.exe à partir de c : \Program Fichiers(x86) \Microsoft sdk \windows\v7.0A\Bin\NETFX4.0 Outils \X64 dans le lecteur C:\ et ensuite

J'ai exécuté les deux déclarations ci-dessus :

gacutil /i %ORA_HOME4% (en anglais) \odp.net\bin\4\Oracle.DataAccess.dll gacutil /i %ORA_HOME4% (en anglais) \asp.net\bin\4\oracle.web.dll lorsque j'ai exécuté les deux déclarations ci-dessus, je n'ai reçu aucun message, je les ai exécutées dans Dos Windows sous le privilège d'administrateur.

  1. J'ai également supprimé tous les fichiers ASP.net temporaires de cet emplacement.

c : \windows\Microsoft.Net\V4.0.30319\temporary Fichiers ASP.net J'ai également changé la cible de la plateforme de construction de l'application web en X86, à l'origine, elle était à "ANy CPU". Par frustration, j'ai également essayé de changer la cible de la plateforme en X64 et j'ai obtenu le message d'erreur suivant

" Cold not load file or assemble . webapp" ou une de ses dépendances. Une tentative a été faite pour charger un programme dont le format est incorrect.

Je n'ai pas installé IIS sur mon ordinateur. J'exécute cette application dans Visual Studio 2010 et je pense qu'elle utilisera l'IIS intégré qui est fourni avec Visual Studio.

J'ai passé de nombreuses heures à résoudre ce problème, mais j'obtiens toujours la même erreur, encore et encore.

43voto

user3048209 Points 439

Essayez ça : Ouvrez IIS Manager, modifiez les paramètres avancés du pool d'applications, mettez Enable 32 bit Application sur false.

27voto

Saikat Daripa Points 271

J'ai trouvé la solution en suivant les étapes suivantes :

  • retirer le Oracle.DataAcces.dll référence,
    et ajouter une nouvelle référence à :
    C:\windows\assembly\GAC\Oracle.DataAccess\X.XXX.X.XX__89b483f429c47342/oracle.dataaccess.dll
  • Faire une copie locale = faux.

J'espère que cela vous aidera

14voto

Kifayat Ullah Points 361

Vous devrez peut-être activer les applications 32 bits dans votre pool d'applications. Allez dans > 'Application Pool' dans IIS => cliquez droit sur votre pool d'applications => mettez le paramètre => 'enable 32 bit application' à true.

N'oubliez pas de redémarrer votre pool d'applications et votre application correspondante qui pointe vers ce pool d'applications.

10voto

ADH Points 1224

Si vous utilisez IIS Express et VS 2017 :

Allez dans les Propriétés de l'application Web > Onglet Web > Section Serveurs > Et changez le Bitness en x64.

4voto

KriZ Points 417

Le problème s'est reproduit lorsque j'ai déménagé d'une machine à une autre et que j'ai tout réinstallé. Dans mon cas, j'utilise des installations Oracle ODP.NET 32 bits et 64 bits.

En listant les assemblages sur ma nouvelle machine, j'ai obtenu la liste suivante

 C:\oracle\product\11.2.0\X64\odp.net\bin\4>gacutil /l|findstr Oracle.DataAccess
     Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
     Policy.2.102.Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
     Policy.2.111.Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
     Policy.2.112.Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
     Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
     Policy.4.112.Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64

seulement des DLLs 64bit à voir ici.

enter image description here

Je ne pouvais pas le voir dans le web.config mais celui que j'utilisais était une version 32bit.

En vérifiant mon ancienne machine avec GACutil, j'ai vu plus de DLLs, aussi celles de X86.

Corrigé en réappliquant le processus d'enregistrement (les deux versions x32/x64 référencées ici)

OraProvCfg.exe /action:gac /providerpath:C:\oracle\product\11.2.0\x32\ODP.NET\bin\4\Oracle.DataAccess.dll

OraProvCfg.exe /action:gac /providerpath:C:\oracle\product\11.2.0\x64\ODP.NET\bin\4\Oracle.DataAccess.dll

Après cela, Visual Studio a été un joyeux lapin et a tout recompilé pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X