Le module spécifié est introuvable erreur sur une machine virtuelle d'hébergement d'un site Web

StackOverflow https://stackoverflow.com/questions/4867565

Question

J'ai eu affaire à distance avec une situation bizarre avec une machine virtuelle Windows Server 2003 qui exécute un site Web ASP.NET 3.5 ... Ou, du moins tente de l'exécuter.

Le site a été installé à l'aide du programme d'installation standard pour le projet, qui a été utilisé pour installer à plusieurs endroits différents. Cependant, celui-ci se comporte différemment.

Le site échoue lorsqu'il fonctionne. Dans l'Observateur d'événements, l'erreur suivante est signalée:

Informations sur l'exception: Type d'exception: HttpException Message d'exception: Le module spécifié est introuvable. (Exception de HRESULT: 0x8007007E)

L'erreur est signalée sur le site Web:

Détails de l'exception: System.IO.FileNotFoundException: Le module spécifié est introuvable. (Exception de HRESULT: 0x8007007E)

L'exécution de la visionneuse de journal de fusion, je peux voir que ASP.NET tente de charger les ensembles suivants:

CppCodeProvider, Version = 8.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a VJSharpCodeProvider, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a

Tout d'abord, il n'y a aucune raison pour ASP.NET devrait être de charger ces assemblées. Je ne trouve nulle part dans machine.config ou toute autre configuration où ces ensembles sont classés selon les besoins. Nous avons essayé d'installer le SDK 3.5, mais ni a été installé. Je n'ai que la version 10 du CPPCodeProvider sur ma machine de développement.

Que diable se passe ici ??

NB: S'il vous plaît ne pas faire une recherche google rapide et réponse. Rien trouvé que j'applique. Et si les réponses de qui que ce soit

"Définir constante DEBUG" et "Définir constante TRACE"

Je vais te frapper à travers les intertubes.

Était-ce utile?

La solution

Damnable hareng rouge.

Il se trouve que j'avais une dépendance qui avait une dépendance à l'égard msvc71.dll. Parce que ma machine virtuelle n'a pas cette DLL, le chargement de la dépendance a échoué. Cependant, à cause des messages pourris d'exception dans le code (et cette partie du cadre, franchement), cette erreur a montré que

Le module spécifié est introuvable. (Exception de HRESULT: 0x8007007E)

Mon premier instinct en voyant quelque chose comme ceci est à tourner fuslogvw. Maintenant, quand je me suis tourné sur l'exploitation de la fusion, il me disait qu'on ne pouvait trouver CppCodeProvider et VJSharpCodeProvider. Donc, je pensais que ce sont la cause de l'erreur. QED.

ILS ETAIENT PAS. Le fait que la fusion ne pouvait pas les localiser absolument aucun effet sur l'exécution d'un site Web ASP.NET. savent bien, les chercheurs d'Internet! Son hareng rouge!

Je compris cela quand je fait ce que je aurais dû le faire depuis le début - J'abandonné Process Monitor sur le serveur, réglez le filtre pour observer le processus w3wp pour les tentatives de DLL de charge, et attendirent FICHIER INTROUVABLE.

J'ai trouvé une copie de msvc71.dll sur ma machine dev (Sql Server l'avait) et laissé tomber sur la boîte system32 virtuelle. Tout ce que je devais faire était alors permettre la lecture et d'exécution du service réseau sur la DLL et tout fonctionnait à nouveau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top