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 Recycle
wł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 Changes
ustawioną właściwość, False
ponieważ 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 start
zdarzenie procesu roboczego zostanie wywołane przed zakończeniem zamykania starego procesu roboczego, wówczas stare end
zdarzenie procesu roboczego nigdy nie zostanie wywołane - To nie dzieje się po kolei, nigdy się nie zdarza.