Comment savoir à quelle page une dll fait référence dans un site ASP.NET précompilé

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

  •  11-07-2019
  •  | 
  •  

Question

J'utilise un site ASP.NET 2.0 précompilé (c'est-à-dire copié sur le serveur à l'aide de la fonctionnalité "Construire - Publier un site Web" dans Visual Studio 2005). J'attrape et enregistre toutes les erreurs qui sont généralement assez détaillées, mais dernièrement, j'ai eu l'erreur suivante sans autre information:

  

Impossible de charger l'assemblage   'App-Web-rp2eml-j'. Assurez-vous qu'il   est compilé avant d'accéder à la page.

Maintenant, ce fichier 'App-Web-rp2eml-j' doit être une dll du dossier bin créé pour le site précompilé. Ma question principale est comment puis-je savoir quelle page aspx recherche cette dll? J'ai essayé de republier le site et même de le nettoyer complètement et de le republier, mais le problème ne s'en va pas.

Lorsque vous recherchez le problème dans Google, la plupart des réponses à propos de ce message d'erreur concernent essentiellement le fait de s'assurer que IIS est configuré pour utiliser ASP.NET 2.0 au lieu de 1.1. Ce n’est pas mon problème.

NOTE 1: Le site semble fonctionner, mais il est évident qu’une page est cassée et que je ne la trouve pas.

REMARQUE 2: le nom de fichier ci-dessus doit comporter des traits de soulignement au lieu de tirets, mais le balisage de SO modifie le texte entre les traits de soulignement en italique.

Était-ce utile?

La solution

La dll mentionnée existe-t-elle dans votre répertoire bin? Vous avez mis cette partie en italique, alors je suppose que ce n'est pas le cas. Cela pourrait signifier que l'erreur fait référence à une dll du dossier Fichiers temporaires.

Ce problème peut se produire si une ou plusieurs des dll du dossier de fichiers temporaires ASP.NET sont corrompues. Parfois, ASP.NET n’actualise pas les fichiers ici s’il n’ya aucune modification dans la dll résidant dans le répertoire virtuel. Cela se produit de temps en temps sur mon serveur.

Ma solution est la suivante:

  1. Arrêtez les services IIS sur le serveur pendant environ une minute.

  2. Accédez au dossier de fichiers temporaires ASP.NET (généralement situé dans le dossier "% windir% \ Microsoft.NET \ Framework \\ Fichiers temporaires ASP.NET \ MyApplicationName") et effacez tous les fichiers du dossier.

  3. Publier et télécharger mon site dans le répertoire virtuel configuré.

  4. Redémarrez IIS et d'autres services.

Ce processus simple en 4 étapes a très bien fonctionné pour moi dans le passé et vaut peut-être la peine d'essayer pour vous.

Pour répondre à votre question de base, cependant, il existe deux façons de "procéder à un reverse engineering". une dll:

  1. Chargez-le dans ILDASM et vérifiez les classes contenues.
  2. Utilisez Reflector pour enregistrer tous les fichiers de classe contenus dans la dll dans un dossier.

Cependant, je doute que cela résoudra votre problème, car chaque dll pourrait contenir de nombreux fichiers de classe et vous ne sauriez pas "quelle page ASPX recherche cette dll".

Autres conseils

Peut-être pouvez-vous capturer des informations plus détaillées sur l'erreur avec l'événement Global.asax Application_OnError afin de pouvoir regarder la pile Trace.

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