Question

Je ne ai pu lire que ASP.NET détecte les changements de fichiers spécifiques tels que les fichiers ASPX, DLL et autres. Il redémarre automatiquement, terminer les demandes en cours d'exécution en cours et de nouvelles demandes avec les nouveaux fichiers déployés.

Mais qu'est-ce qui se passe dans le temps du premier fichier copié beeing jusqu'à ce que le dernier a été échangé? Si j'échange le premier fichier DLL, puis une requête arrive, mais les autres fichiers DLL sont dans une version plus ancienne - il va tomber en panne juste? Est-ce que asp.net attendre quelques secondes et ne se démarre nouveau après X secondes de non (pertinent) déposer des modifications?

Thx!

Était-ce utile?

La solution

Vous avez 4 questions ici: Qu'est-ce qui se passe dans le temps du premier fichier beeing copié jusqu'à ce que le dernier a été échangé - Il y a un temps de jeu alors que .net attend de voir si d'autres fichiers ont été modifiés avant qu'il ne démarre le nouveau domaine d'application avec le nouveau chargé dll.

Si j'échange le premier fichier DLL, puis une requête arrive, mais les autres fichiers DLL sont dans une version plus ancienne - se planter juste - Cela dépend de ce changement de code sont les dll . Si le nouveau dll peut fonctionner très bien avec l'ancien code, alors il sera très bien. Mais si le domaine de l'application tourne la nouvelle DLL et que la nouvelle dll dépend de quelque chose qui est pas encore là ... alors oui, il lancera une exception.

asp.net attendre quelques secondes et ne se démarre nouveau après X secondes de aucun changement de fichier (pertinent) - Oui. Je ne l'ai pas été en mesure de trouver combien de temps que le temps est. Mais dans mon expérience personnelle, il est quelque part dans la gamme 1-2 secondes.

J'ai aussi trouvé une bonne explication ici sur le domaine d'application et re-chargement de DLL: http://odetocode.com/Articles/305.aspx

  

Si vous copiez un dll mis à jour dans un   Le sous-répertoire bin de l'application, la   runtime ASP.NET reconnaît qu'il est   nouveau code à exécuter. depuis ASP.NET   ne peuvent pas échanger la dll dans l'actuel   AppDomain, il commence une nouvelle AppDomain.   L'ancien domaine d'application est « fuite   arrêté », qui est, les demandes existantes   sont autorisés à terminer l'exécution, et   une fois qu'ils sont tous fini la   AppDomain peut décharger. Le nouveau   AppDomain commence par le nouveau code et   commence à prendre toutes les nouvelles demandes.

     

En général, quand une charge dll dans un   processus, le processus verrouille le dll et   vous ne pouvez pas écraser le fichier sur le disque.   Cependant, AppDomains ont une caractéristique   connu sous le nom de cliché instantané qui permet   assemblées restent déverrouillées et   remplaçable sur le disque.

     

Le temps d'exécution avec ASP.NET initialise   Shadow Copy activé pour le bac   annuaire. Le AppDomain copie tout   dll dont il a besoin à partir du répertoire bin à   un emplacement temporaire avant le verrouillage   et le chargement de la DLL en mémoire.   Shadow Copy nous permet d'écraser toute   dll dans le répertoire bin lors d'une   mise à jour sans prendre le web   application hors ligne.

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