Können Sie mir sagen, was genau passiert, wenn wir die Web.config (zur Laufzeit) auf einem IIS-Server bearbeiten?

11

Können Sie mir sagen, was genau passiert, wenn wir die Web.config (zur Laufzeit) auf einem IIS-Server bearbeiten?

Wird die von der web.config abhängige Anwendung automatisch neu gestartet? Wenn ja, ist es möglich, den automatischen Neustart abzubrechen (oder die web.config neu zu laden)?

Bastien Vandamme
quelle
Sie können versuchen, die Dateizugriffsüberwachung zu aktivieren, um festzustellen, ob IIS die Datei web.config liest, nachdem Sie sie geändert haben.
Eric H

Antworten:

10

Die ASP.NET AppDomain wird immer dann neu gestartet, wenn Sie web.config berühren. Es ist möglich, die File Change Notification (FCN) für einen Ordner zu deaktivieren, aber es ist normalerweise nicht die beste Wahl, wenn Sie helfen können. Wenn Sie es deaktivieren, bedeutet dies nur, dass Sie den App-Pool manuell recyceln müssen, damit die Änderungen wirksam werden.

Vor IIS7 führten nur ASP.NET-Änderungen zur Wiederverwendung der AppDomain. Bei IIS7 und vielen Einstellungen in web.config ist dies jedoch ein häufigeres Problem. Wenn Sie also ein Standarddokument in IIS 7 Manager ändern, wird AppDomain jetzt wiederverwendet.

Im Idealfall müssen Sie nur Ihre Änderungsrate niedrig halten oder die Änderung manchmal auf applicationHost.config anwenden (was nicht dazu führt, dass die AppDomain wiederverwendet wird) und nicht auf web.config.

Scott Forsyth - MVP
quelle
4

Die Anwendung, die die web.config verwendet, wird neu gestartet, wenn Sie sie ändern. Weitere Informationen finden Sie hier:

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

Ich kenne keine Möglichkeit, dies zu verhindern (und ich bin mir nicht sicher, warum Sie dies möchten - vielleicht können Sie weitere Details zu dem, was Sie erreichen möchten, angeben).

Schneebesen
quelle
3

Zu Ihrer Information - In ASP.NET 2.0 können Sie die integrierten Integritätsüberwachungsereignisse verwenden, um Neustarts von Anwendungen zusammen mit dem Grund für den Neustart zu protokollieren. Auf diese Weise können Sie klar dokumentieren, wann und wie oft es auftritt. Dies wird durch Bearbeiten der Master-Datei web.config für den Computer erreicht.

Für mehr Informationen:

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

Greg Askew
quelle
3

[NUR EINE NOTIZ]

Ich weiß, dass dies ein alter ist, aber das verdient immer noch Beachtung.

Scott Forsyth - MVP Antwort ist falsch.

Die ASP.NET AppDomain wird immer dann neu gestartet, wenn Sie web.config berühren.

Das ist falsch.


Die Whisk-Antwort ist die technisch korrekteste und vollständigste Antwort, da sie einen Link zum MSDN enthält, der ein wichtiges Detail enthält:

Wenn ein Neustart der Anwendung erforderlich ist, bedient ASP.NET alle ausstehenden Anforderungen aus der vorhandenen Anwendungsdomäne und den alten Assemblys, bevor die Anwendungsdomäne neu gestartet und die neuen Assemblys geladen werden.

Dies ist besonders wichtig, wenn es sich um Webdienste handelt. Dies weist darauf hin, dass ein Neustart am Mittag sicher in Ordnung ist.

user1416420
quelle