Nous rencontrons un problème avec la compilation d'exécution ASP.Net.La compilation de l'environnement d'exécution ASP.Net ne quitte pas la DLL compilée et supprime les fichiers temporaires.
Au démarrage (et après redémarrage) de IIS, les contrôles utilisateur et les mises en page se compilent parfaitement sans aucun problème. Mais à un certain moment au cours du cycle de vie, la compilation de l'exécution s'arrête tout simplement de fonctionner. Un redémarrage du processus IIS le fait fonctionner à nouveau. Après avoir recherché dans une myriade de messages différents, nous avons effectué quelques déboguages supplémentaires, mais nous sommes toujours perplexes quant aux causes de notre problème.
Pour rester dans le droit chemin, je vais sauter en expliquant tous les tests que nous avons effectués, et sauter directement à ce que je crois être le plus proche du cœur de l'erreur.
Nous avons changé notre compilation.tempDirectory en un dossier personnalisé utilisé exclusivement par cette application web, et nous avons défini un procmon pour voir tous les changements de fichiers dans ce dossier. Une fois que l'erreur commence à se produire, nous pouvons voir que les fichiers temporaires sont réellement écrits sur ce lecteur, et csc.exe est démarré (et pendant ce temps, conhost.exe, CcmExec.exe et beaucoup d'autres processus), nous ne voyons aucune erreur dans procmon, mais après l'exécution de csc.exe, il supprime les fichiers temporaires sans quitter les versions compilées. (et l'écran d'erreur asp.net nous montre que csc.exe a échoué, mais pas exactement ce qui a échoué). Les fichiers temporaires sont tous créés (sauf pour la DLL résultante) - .0.cs, .1.cs, .tmp, .cmdline, .out, .err sont tous là pour un court moment. Mais immédiatement après la création, ils sont tous supprimés à nouveau, et l'application ne peut pas les trouver.
Quelqu'un a-t-il une idée de ce qui provoque l'échec de ce processus après un certain temps? Le même fichier compile très bien si nous l'exécutons juste après un redémarrage IIS, mais après un moment il semble que quelque chose pendant la compilation d'exécution échoue, provoquant le processus ASP/w3wp/csc pour supprimer tous les signes des fichiers temporaires, ne créant pas la DLL, et faire échouer la fonctionnalité.
Il est peut-être intéressant de noter que ce serveur a fonctionné pendant plus d'un an, et ce problème n'est survenu que depuis un mois. Bien que cela ne soit pas garanti tous les jours, cela arrive souvent plusieurs fois par jour, ce qui nous oblige à recommencer. Ce serveur est un serveur CM (utilisé uniquement par les éditeurs de contenu), le même code s'exécute sur notre serveur CD qui est beaucoup plus occupé et n'a pas montré de signes de cette erreur. Cependant, notre serveur CM serait plus enclin à l'erreur, car il y a beaucoup plus de contrôles usés qui sont exécutés beaucoup plus rarement, donc la chance qu'ils sont compilés tôt dans le cycle de vie de l'application est moindre. –