Pourriez-vous me dire ce qui se passe exactement lorsque nous modifions le Web.config (au moment de l'exécution) sur un serveur IIS?

11

Pourriez-vous me dire ce qui se passe exactement lorsque nous modifions Web.config (au moment de l'exécution) sur un serveur IIS.

L'application qui dépend du web.config est-elle redémarrée automatiquement? Si oui, est-il possible d'annuler le redémarrage automatique (ou le rechargement du web.config)?

Bastien Vandamme
la source
Vous pouvez essayer d'activer l'audit d'accès aux fichiers pour voir si IIS lit ou non le fichier web.config après l'avoir modifié.
Eric H

Réponses:

10

Le domaine d'application ASP.NET est redémarré chaque fois que vous «touchez» web.config. Il est possible de désactiver la notification de modification de fichier (FCN) pour un dossier, mais ce n'est généralement pas le meilleur choix si vous pouvez l'aider. Si vous le désactivez, cela signifie simplement que vous devez recycler manuellement le pool d'applications pour que les modifications prennent effet.

Avant IIS7, seules les modifications ASP.NET provoquaient le recyclage d'AppDomain, mais avec IIS7 et de nombreux paramètres résidant dans web.config, il s'agit d'un problème plus courant. c'est-à-dire que la modification d'un document par défaut dans IIS 7 Manager entraînera le recyclage d'AppDomain maintenant.

Idéalement, il vous suffit de maintenir votre taux de modification bas, ou parfois d'appliquer la modification à applicationHost.config (qui ne provoque pas le recyclage AppDomain) plutôt qu'à web.config.

Scott Forsyth - MVP
la source
4

L'application qui utilise le web.config redémarrera lorsque vous le modifierez, il y a plus d'informations ici:

http://msdn.microsoft.com/en-us/library/ms178473.aspx

Je ne connais aucun moyen d'empêcher que cela se produise (et je ne sais pas pourquoi vous voudriez - peut-être pourriez-vous fournir plus de détails sur ce que vous essayez de réaliser).

Fouet
la source
3

Pour info: dans ASP.NET 2.0, vous pouvez utiliser les événements de surveillance de l'intégrité intégrés pour consigner les redémarrages de l'application ainsi que la raison du redémarrage. Cela vous permettra de documenter clairement quand et à quelle fréquence cela se produit. Pour ce faire, modifiez le fichier web.config principal de la machine.

Pour plus d'informations:

http://blogs.msdn.com/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx

Greg Askew
la source
3

[JUSTE UNE NOTE]

Je sais que c'est un ancien mais cela mérite tout de même d'être noté.

Scott Forsyth - La réponse MVP est incorrecte.

Le domaine d'application ASP.NET est redémarré chaque fois que vous «touchez» web.config.

C'est faux.


La réponse au fouet est la réponse la plus correcte et la plus complète sur le plan technique, car elle comprend un lien vers le MSDN qui comprend un détail important:

Lorsqu'un redémarrage d'application est requis, ASP.NET servira toutes les demandes en attente du domaine d'application existant et des anciens assemblys avant de redémarrer le domaine d'application et de charger les nouveaux assemblys.

Ceci est particulièrement important lorsque nous parlons de services Web. Cela indique qu'il peut être correct de redémarrer en milieu de journée en toute sécurité.

user1416420
la source