2017-10-06 4 views
0

Je reçois l'erreur «Impossible de charger le fichier ou l'assembly xxx ou l'une de ses dépendances *********» lorsque j'héberge mon site Web sur un serveur Windows Server 2012 (IIS 8). Le xxx ici est mon nom de projet dans mon VS local 2015. L'application fonctionne parfaitement bien sur mon PC localImpossible de charger le fichier ou l'assemblage xxx ou l'une de ses dépendances. Une tentative de chargement d'un programme avec un format incorrect a été effectuée.

Il s'agit d'une application VB.NET avec base de données Oracle 12c comme backend.

Ce que j'ai essayé jusqu'à maintenant. 1. Publier en réglant la CPU cible sur "Any CPU" et la configuration sur "Release-Any CPU" - Toujours la même erreur. 2. Dans le serveur IIS, j'ai défini les applications Enable 32-but sur True dans le pool d'applications. Cela donne une erreur différente. - Impossible de charger le fichier ou l'assembly 'Oracle.DataAccess' ou l'une de ses dépendances. Une tentative de chargement d'un programme avec un format incorrect a été effectuée.

Aidez-nous s'il vous plaît.

+0

Avez-vous vérifié la version de l'infrastructure dans le pool d'applications IIS? 1. IIS> Pools d'applications> Sélectionnez le pool d'applications actuel. 2. Vérifiez que l'utilisateur (serveur) a accès au répertoire où se trouvent vos assemblys. – JFT

+0

Salut JFT, Merci pour votre réponse. La version .NET CLR est v4.0.30319. Le serveur accède au répertoire par IISUSRS non? – ssuhas76

Répondre

0

Il semble que votre DLL Oracle.DataAccess soit une DLL 64 bits. Vous pouvez voir quel pilote est chargé sur le serveur Web en naviguant dans Windows Explorer vers le dossier \ windows \ assembly. enter image description here

La plupart des applications construites avec l'option Any CPU auront la case à cocher dans les paramètres du projet pour préférer 32 bits. Pour éviter cela, changez la cible de votre projet en 64 bits.

enter image description here

Ensuite, vous n'avez pas besoin « Activer 32 bits » dans votre pool d'applications et votre problème devrait disparaître. S'il vous plaît laissez-moi savoir si cela aide.

+0

Salut Dacke. Merci beaucoup pour votre aide. Ça fonctionne maintenant. J'ai changé la cible de la plateforme en x64 et pendant la publication, j'ai changé la configuration en "Release - x64". Je peux héberger avec succès le site web sur IIS en activant le 32 bits. Une dernière question cependant. J'ai 3 version d'Oracle DataAccess dans windows-> assembly. 1. Version-1.102.5.0 2. Version - 2.121.2.0 3. Version - 2.112.3.0 Sur le serveur dans winodws-> Assemblée je ne dispose que de la version Oracle.DataAccess à savoir la version 2.121.2.0. Est-ce normal? – ssuhas76

+0

Oui, comme vous pouvez le voir sur ma capture d'écran, j'ai trois pilotes installés sur ma boîte de développement. La plupart des serveurs d'applications n'en auront qu'un. J'ai pris pour faire à ceci une propriété configurable dans ma configuration d'application de sorte que je puisse adapter n'importe quelle version qu'ils ont au déploiement. Vous avez indiqué que -enabled 32 bits- dans le pool d'applications sur IIS? Si vous construisez une application 64 bits, pourquoi avez-vous fait cela? –

+0

Salut Dacke, Oui, je n'aurais pas dû activer pour 32 bits. J'essayais juste les suggestions dans le cadre du résultat google – ssuhas76