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.

2voto

bax 1188 Points 121

Dans mon cas, ce qui suit a résolu le problème :

  1. Téléchargement de "32-bit Oracle Data Access Components (ODAC) avec Oracle Developer Tools pour Visual Studio" à partir de http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html
  2. Puis ajout de la référence oracle.dataaccess.dll à la bin en parcourant l'emplacement du fichier ou simplement à partir de la liste de référence dans .NET onglet.

2voto

Jeff Mergler Points 634

J'ai eu la même erreur avec Oracle.DataAccess mais en déployant sur des sites Web Azure (azurewebsites.net). Pour moi, j'ai dû modifier un paramètre dans VS.NET 2019 avant de publier sur Azure. J'ai coché la case "Utiliser la version 64 bits d'IIS Express pour les sites Web et les projets" qui se trouve dans la rubrique Tools > Options > Projects and Solutions > Web Projects .

1voto

Hernaldo Gonzalez Points 309

Dans mon cas, j'utilise VS 2010, Oracle v11 64 bits. Je pourrais publier en mode 64 bits (en réglant le mode "Any Cpu" dans la configuration du projet Web) et je pourrais régler IIS sur le serveur de production sur false pour la compatibilité 32 bits (parce que le serveur est 64 bits et j'aime en profiter).

Ensuite, pour résoudre le problème "Could not load file or assembly 'Oracle.DataAccess'" :

  • Dans le PC local et le serveur est installé Oracle v11, 64 Bit.
  • Dans tous les PC de développement local, je fais référence à Oracle.DataAccess.dll ( C:\app\user\product\11.2.0\client_1\odp.net\bin\4 ) qui est de 64 bits.
  • Dans le serveur IIS Production, j'ai défini la compatibilité 32 bits sur False.
  • La référence dans le projet web à System.Web.Mvc.dll était la version v3.0.0.1 dans le PC local, cependant dans la production est seulement installé la version 3.0.0.0 de MVC. Ainsi, le correctif a été locallly travailler avec MVC 3.0.0.0 et non 3.0.0.1 et de publier à nouveau sur le serveur, et cela fonctionne.

0voto

Sunil Points 1375

Vous pouvez aussi télécharger et exécuter le fichier install.bat dans 'ODAC112030Xcopy.zip' à partir de Téléchargements Oracle Data Access Components (ODAC) 64 bits . Cela a résolu mon problème.

0voto

Biki Points 466

Pour moi, tout le reste était presque correct, mais d'une manière ou d'une autre, les paramètres de mon projet ont changé et iisExpress a été utilisé au lieu de IISLocal. Lorsque j'ai changé et pointé vers le répertoire virtuel (dans IISLocal), tout a recommencé à fonctionner parfaitement.

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