Czy możesz mi powiedzieć, co dokładnie się dzieje, gdy edytujemy plik Web.config (w czasie wykonywania) na serwerze IIS?

11

Czy możesz mi powiedzieć, co dokładnie się dzieje, gdy edytujemy plik Web.config (w czasie wykonywania) na serwerze IIS.

Czy aplikacja zależna od pliku web.config jest automatycznie uruchamiana ponownie? Jeśli tak, czy można anulować automatyczne ponowne uruchomienie (lub ponowne załadowanie pliku web.config)?

Bastien Vandamme
źródło
Możesz spróbować włączyć kontrolę dostępu do plików, aby sprawdzić, czy IIS odczytuje plik web.config po jego zmodyfikowaniu.
Eric H

Odpowiedzi:

10

Domena aplikacji ASP.NET jest restartowana za każdym razem, gdy „dotkniesz” pliku web.config. Możliwe jest wyłączenie Powiadomienia o zmianie pliku (FCN) dla folderu, ale zazwyczaj nie jest to najlepszy zakład, jeśli możesz mu pomóc. Jeśli ją wyłączysz, oznacza to po prostu, że musisz ręcznie ponownie przetworzyć pulę aplikacji, aby zmiany odniosły skutek.

Przed IIS7 tylko zmiany ASP.NET powodowałyby ponowne uruchomienie AppDomain, ale w IIS7 i wielu ustawieniach w web.config jest to częstszy problem. tj. zmiana domyślnego dokumentu w Menedżerze IIS 7 spowoduje, że AppDomain będzie teraz przetwarzać ponownie.

Najlepiej jest po prostu obniżyć współczynnik zmian lub czasami zastosować zmianę do applicationHost.config (co nie powoduje recyklingu AppDomain), a nie web.config.

Scott Forsyth - MVP
źródło
4

Aplikacja korzystająca z pliku web.config uruchomi się ponownie po zmianie, więcej informacji znajdziesz tutaj:

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

Nie znam żadnego sposobu, aby temu zapobiec (i nie jestem pewien, dlaczego chcesz - być może możesz podać więcej szczegółów na temat tego, co próbujesz osiągnąć).

Śmigać
źródło
3

[TYLKO UWAGA]

Wiem, że to stary, ale nadal zasługuje na uwagę.

Scott Forsyth - odpowiedź MVP jest niepoprawna.

Domena aplikacji ASP.NET jest restartowana za każdym razem, gdy „dotkniesz” pliku web.config.

To jest źle.


Odpowiedź „trzepaczka” jest najbardziej poprawną technicznie i kompletną odpowiedzią, ponieważ zawiera link do MSDN, który zawiera jeden ważny szczegół:

Gdy wymagane jest ponowne uruchomienie aplikacji, ASP.NET będzie obsługiwał wszystkie oczekujące żądania z istniejącej domeny aplikacji i starych zestawów przed ponownym uruchomieniem domeny aplikacji i załadowaniem nowych zestawów.

Jest to szczególnie ważne, gdy mówimy o usługach internetowych. Oznacza to, że może być w porządku bezpieczne ponowne uruchomienie w ciągu dnia.

użytkownik1416420
źródło