IIS 7.5 - Wyłącz nieużywane nakładające się właściwości Kosza po aktualizacji pliku web.config


25

Mam witrynę, która posiada wyłączną blokadę niektórych zasobów. Użyłem zdarzeń .NET Application_Start i Application_End, aby uzyskać i zwolnić blokadę tych zasobów w odpowiednim czasie. Aby działało to poprawnie, w danym momencie może być uruchomiona tylko jedna instancja mojej aplikacji.

Aby tak się stało, ustawiłem Disable Overlapped Recyclewłaściwość puli aplikacji na True. Ta właściwość ma zapewnić całkowite wyłączenie starego procesu roboczego przed uruchomieniem nowego, gdy pula aplikacji zostanie ponownie przetworzona. Działa to dobrze za każdym razem, gdy pula aplikacji jest przetwarzana ręcznie przez IIS, automatycznie w wyniku osiągnięcia limitu czasu bezczynności lub automatycznie zgodnie z określonymi regułami przedziału czasu / czasu.

Jednak po zaktualizowaniu pliku web.config dla witryny ta reguła nie jest stosowana - nowy proces roboczy uruchamia się przed zakończeniem zamykania starego. To powoduje złe rzeczy. Mam Disable Recycling for Configuration Changesustawioną właściwość, Falseponieważ chcę, aby pula aplikacji została poddana recyklingowi po aktualizacji pliku web.config - zdarza się to często podczas programowania.

Czy jest to coś, czego się oczekuje, czy jest to błąd w IIS? Czy moja jedyna opcja jest taka, aby zmiana web.config nie spowodowała recyklingu puli aplikacji? Wolałbym tego nie robić, ponieważ jestem pewien, że spowoduje to wiele problemów z ludźmi zmieniającymi konfigurację, a następnie zapominającymi o recyklingu puli aplikacji.

Aktualizacja:

Aby być bardziej zrozumiałym, gdy nowe startzdarzenie procesu roboczego zostanie wywołane przed zakończeniem zamykania starego procesu roboczego, wówczas stare endzdarzenie procesu roboczego nigdy nie zostanie wywołane - To nie dzieje się po kolei, nigdy się nie zdarza.


Jak długo po aktualizacji pliku web.config przed rozpoczęciem nowego procesu roboczego?
Greg Askew

Nowy proces roboczy rozpoczyna się, gdy tylko próbuję uzyskać dostęp do witryny po recyklingu - więc mniej niż sekundę, jeśli jestem szybki. Jeśli pozostanie, zdarzenie „zamknięcie” starego procesu roboczego ma miejsce 20–30 sekund po recyklingu.
John

Mam ten sam problem. Nakładają się
Andrew Rimmer

11
Edycja pliku web.config powoduje ponowne załadowanie appDomain. AppDomain jest oddzielna od AppPool. Nie powinieneś widzieć nowego identyfikatora procesu W3WP po ​​zmianie web.config. Zobacz tutaj treeloop.com/blog/iis-application-domain-and-pool-recycling
kheld

1
@kheld ma absolutną rację (być może dodaj to jako odpowiedź), to nie jest nakładanie się apletu, to nakładanie się aplikacji. Nie sądzę, że możesz to zatrzymać, ale możesz wyłączyć recykling domeny aplikacji po zmianie.
Sam Cogan

Odpowiedzi:


1

Z tego posta MSDN: https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/

Dlatego w ramach procesu wdrażania kodu wygląda na to, że pula uruchomi się ponownie po wdrożeniu dowolnej z tych zmian:

Natychmiastowy recykling

  • Zmiany w Web.config
  • Zmiany Machine.config
  • Zmiany Global.asax
  • Zmiany katalogu bin
  • Zmiany kodu aplikacji

( pożyczone z: /programming/302110/what-causes-an-application-pool-in-iis-to-recycle )

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.