J'ai installé une application Web sur IIS 7.0 Windows Server 2008 R2 64 bits . Je fais référence à un Oracle.DataAccess.dll; Lorsque j'essaie d'accéder à l'application, le message suivant s'affiche: .__ "Impossible de charger le fichier ou l'assembly 'Oracle.DataAccess' ou l'une de ses dépendances. Vous avez tenté de charger un programme avec un format incorrect." Quelqu'un peut-il m'aider, s'il vous plaît?
Il semble que le processus d'installation du composant Oracle Data Access à l'aide de la version "11.2 Release 3 (11.2.0.2.1) avec Xcopy Deployment" soit rompu. Pour résoudre ce problème, vous devez enregistrer les assemblys manquants dans le GAC. Pour ce faire, exécutez ces commandes à partir d’une console d’administrateur pour cette version spécifique:
md C:\Windows\Assembly\GAC_32\Oracle.DataAccess\4.112.2.0__89b483f429c47342\
copy %Oracle_HOME%\odp.net\bin\4\Oracle.DataAccess.dll C:\Windows\Assembly\GAC_32\Oracle.DataAccess\4.112.2.0__89b483f429c47342\
md C:\Windows\Assembly\GAC_32\Oracle.Web\4.112.2.0__89b483f429c47342\
copy %Oracle_HOME%\asp.net\bin\4\Oracle.web.dll C:\Windows\Assembly\GAC_32\Oracle.Web\4.112.2.0__89b483f429c47342\
Notez que cela enregistre uniquement les ressources de la DLL mais pas celles des autres langues. Donc, si vous utilisez une autre langue que l'anglais (de, es, fr, it, ja, ko, pt-BR, zh-CHS et zh-CHT), vous devez également les enregistrer à l'aide de la ressource correspondante. fichier.
Si Visual Studio est installé sur la machine, vous pouvez également émettre les commandes suivantes:
gacutil /i %Oracle_HOME%\odp.net\bin\4\Oracle.DataAccess.dll
gacutil /i %Oracle_HOME%\asp.net\bin\4\Oracle.web.dll
Remarque: recherchez gacutil.exe dans le dossier d'installation de Visual Studio.
J'espère que cela t'aides.
P.S. Ou vous pouvez essayer ceci .
J'ai évité d'enregistrer les assemblys 11.2 Release 5 dans le GAC en configurant "Activer les applications 32 bits" pour le pool d'applications sur true .
Vous devrez peut-être activer les applications 32 bits dans votre AppPool.
Vous devez enregistrer cette dll sur le serveur live à l'aide de GAC util. Vérifiez également si son présent dans le dossier bin ou non. Parfois, les dll manquantes dans le répertoire bin entraînent la même erreur
Dans mon cas, j'utilise VS 2010, Oracle v11 64 bits. Je pourrais publier en mode 64 bits (paramètre sur "Tout Cpu" dans la configuration de projet Web) et définir IIS sur Production Server sur une compatibilité de 32 bits sur false (car le serveur est en 64 bits et j'aime bien en profiter).
Ensuite, pour résoudre le problème "Impossible de charger le fichier ou l'assembly 'Oracle.DataAccess'" (parfois, l'erreur "Message d'erreur du compilateur: CS1705: Assembly"):
Installation de Xcopy pour Windows x64 d'ODAC 11.2 version 3 (11.2.0.2.1) 64 bits à partir de:
http://www.Oracle.com/technetwork/database/windows/downloads/index-090165.html
Corrigé pour moi. Assurez-vous de mettre à jour votre chemin d'accès système à l'étape 4 du fichier Lisez-moi.
La réponse acceptée, publiée par George Netu, m'a aidé à résoudre mon problème, mais j'ai dû bricoler avec des bagatelles supplémentaires:
Description du problème:
Sous C:\Windows\Assembly, j'ai trouvé deux Oracle.DataAccess éléments (dossiers GAC?). Relict, causé par plusieurs installations de client Oracle. Un élément présentait la version 2.112.1.0 mais était réellement version 2.121.2.0 (visible via Propriétés-> Version). Cette incohérence était le bug.
Premières tentatives inutiles:
gacutil /i ...
Succès final:
J'ai atterri sur la page msdn Gacutil.exe et j'ai finalement pu supprimer les éléments du dossier C:\Windows\Assembly.
gacutil /u Oracle.DataAccess, Version=2.112.1.0, Culture="Neutral",PublicKeyToken=45e343aae32233ca
gacutil /u Oracle.DataAccess, Version=2.212.2.0, Culture="Neutral",PublicKeyToken=45e343aae3223abc
gacutil /u Oracle.Web, Version=2.112.1.0, Culture="Neutral",PublicKeyToken=45e343aae3223def
Après cela, j’ai répété les deux commandes gacutil /i ...
et les deux DLL sont apparues dans des versions cohérentes.
Enfin redémarré l'IIS, et ça marche ..
Oui, c’est un problème assez agaçant auquel j’ai parfois été confronté. Le problème principal est qu’une application Web utilise à tort Oracle.DataAccess.dll 32 bits au lieu de 64 bits, ou dans le cas contraire. Il y a quelques solutions pour cela.
1. Activation des applications 32 bits dans le pool d'applications si votre application est 64 bits et que vous devez exécuter Oracle.DataAccess.dll 32 bits.
Accédez à IIS et activez l'option "Activer les applications 32 bits" dans les paramètres avancés d'un pool d'applications.
2. Correction des dll de référence.
Le chemin de référence est censé être le chemin de référence système configuré par le processus d'installation Oracle. Cependant, dans certains cas, tels que l'installation ou la mise à jour d'une nouvelle version d'Oracle, les dernières DLL ne mettent pas à jour les anciennes, ou le chemin est modifié, ou une référence n'est pas mise à jour dans le projet d'application Web. Par conséquent, nous devrions corriger la référence Oracle.DataAccess manuellement.
Accédez à l'application Web et supprimez la référence Oracle.DataAccess. Et ajoutez une nouvelle référence pour Oracle.DataAccess. Il doit être correct Oracle.DataAccess.dll à partir de votre chemin d'installation Oracle. Par exemple:
C:\Oracle\product\12.2.0\client_1\odp.net\bin\4\Oracle.DataAccess.dll
ODP.NET et incompatibilité DLL non gérée et dépendante Pour imposer l'utilisation de Oracle.DataAccess.dll Assembly avec la version correcte de son DLL non gérées, une exception est générée si Oracle.DataAccess.dll remarque qu'il a chargé une version incompatible d'une personne à charge non gérée DLL.
https://docs.Oracle.com/cd/E11882_01/win.112/e23174/InstallODP.htm#ODPNT152
3. Le moyen simple et rapide (mais la solution ne convient pas) est de remplacer directement un fichier Oracle.DataAccess.dll copié à partir du chemin d'installation Oracle (par exemple: C:\Oracle\product\12.2.0\client_1\odp.net\bin\4 \) dans le dossier Bin de votre application Web.
J'espère que ça vous aidera un peu. Bonne chance.
J'ai eu le même problème.
Je vais aux propriétés du projet en général section set plate-forme cible à 64 bits (x64) et mon problème résolu