Application Web ASP.NET précompilée: erreur «Le fichier nom_fichier.aspx du fichier System.Web.HttpException n'a pas été précompilé et ne peut pas être demandé.»
-
03-07-2019 - |
Question
J'ai créé un projet de déploiement Web à l'aide du modèle de Visual Studio 2008 pour une application Web ASP.NET 3.5 (pas un site Web).
J'ai compilé le projet qui a créé les fichiers nécessaires au déploiement. J'ai copié les dossiers résultants (bin, fichiers statiques et tous les dossiers avec les espaces réservés aspx, etc.) sur un serveur de transfert sur lequel je voulais tester l'application.
Si je ne marque pas l'option "Autoriser la mise à jour de ce site précompilé", un message d'erreur s'affiche sur chaque page que je charge dans le navigateur:
System.Web.HttpException file PAGENAME.aspx has not been pre-compiled, and cannot be requested.
la dernière ligne de la trace de la pile:
System.Web.Compilation.BuildManager.GetVPathBuildResultInternal( VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +8756366
Si je coche l'option, tout va bien (je suppose que les aspx / ascx actuels sont toujours présents dans leur forme d'origine).
Avez-vous une idée de ce qui me manque ici? Y at-il un paramètre ou un fichier spécial que j'ai oublié de copier?
Merci!
Notes:
- J'ai quelques références à des assemblys tiers
- J'ai vérifié le dossier bin sur le serveur de transfert. Il contient l'assemblage précompilé qui contient toutes les classes (j'ai utilisé Reflector pour analyser l'assemblage).
La solution
Tous les fichiers ASPX ne doivent contenir que
Ceci est un fichier marqueur généré par l'outil de précompilation, et devrait ne pas être supprimé!
Supprimez tout ce qui se trouve dans votre dossier bin et publiez à nouveau le Web. Assurez-vous de prendre les fichiers du répertoire dans lequel vous avez publié.
Assurez-vous également de copier les fichiers .compiled
contenus dans le dossier bin.
Autres conseils
Pour mémoire, j'ai oublié de copier ces fichiers ".compiled". fichiers ( documentation MSDN: gestion des fichiers au cours de la précompilation ASP.NET ):
Pour les fichiers exécutables dans un site Web ASP.NET application, les assemblages du compilateur et fichiers avec le nom de fichier .compiled extension. Le nom de l'assemblage est généré par le compilateur. le Le fichier compilé ne contient pas code exécutable. Au lieu de cela, il contient seules les informations que ASP.NET a besoin de trouver le bon assemblage.
Après l'application précompilée déployé, ASP.NET utilise les assemblys dans le dossier Bin pour traiter les demandes. La sortie de précompilation comprend Fichiers .aspx ou .asmx en tant qu'espaces réservés pour les pages. Les fichiers d'espace réservé ne contenir aucun code. Ils n'existent que pour fournir un moyen d’appeler ASP.NET pour un demande de page spécifique et que ce fichier les autorisations peuvent être définies pour restreindre accès aux pages.