diff --git a/src/AspNetCore/Inc/globalmodule.h b/src/AspNetCore/Inc/globalmodule.h index aca1857051..77e66e376a 100644 --- a/src/AspNetCore/Inc/globalmodule.h +++ b/src/AspNetCore/Inc/globalmodule.h @@ -28,8 +28,8 @@ public: ); GLOBAL_NOTIFICATION_STATUS - OnGlobalConfigurationChange( - _In_ IGlobalConfigurationChangeProvider * pProvider + OnGlobalApplicationStop( + _In_ IHttpApplicationStopProvider * pProvider ); private: diff --git a/src/AspNetCore/Src/applicationmanager.cxx b/src/AspNetCore/Src/applicationmanager.cxx index 4b1c9b6a71..e51e36078f 100644 --- a/src/AspNetCore/Src/applicationmanager.cxx +++ b/src/AspNetCore/Src/applicationmanager.cxx @@ -235,7 +235,14 @@ APPLICATION_MANAGER::ShutDown() // clean up the hash table so that the application will be informed on shutdown m_pApplicationInfoHash->Clear(); + ReleaseSRWLockExclusive(&m_srwLock); } + // stop filewatcher monitoring thread + if (m_pFileWatcher != NULL) + { + delete m_pFileWatcher; + m_pFileWatcher = NULL; + } } diff --git a/src/AspNetCore/Src/dllmain.cpp b/src/AspNetCore/Src/dllmain.cpp index 83b63d6ea8..2a90fb5874 100644 --- a/src/AspNetCore/Src/dllmain.cpp +++ b/src/AspNetCore/Src/dllmain.cpp @@ -201,8 +201,9 @@ HRESULT } hr = pModuleInfo->SetGlobalNotifications( - pGlobalModule, - GL_CONFIGURATION_CHANGE | GL_STOP_LISTENING); + pGlobalModule, + GL_APPLICATION_STOP | // Configuration change trigers IIS application stop + GL_STOP_LISTENING); // worker process stop or recycle if (FAILED(hr)) { diff --git a/src/AspNetCore/Src/globalmodule.cpp b/src/AspNetCore/Src/globalmodule.cpp index fc0ba3c6ea..af2c922608 100644 --- a/src/AspNetCore/Src/globalmodule.cpp +++ b/src/AspNetCore/Src/globalmodule.cpp @@ -34,14 +34,14 @@ ASPNET_CORE_GLOBAL_MODULE::OnGlobalStopListening( // Recycled the corresponding core app if its configuration changed // GLOBAL_NOTIFICATION_STATUS -ASPNET_CORE_GLOBAL_MODULE::OnGlobalConfigurationChange( - _In_ IGlobalConfigurationChangeProvider * pProvider +ASPNET_CORE_GLOBAL_MODULE::OnGlobalApplicationStop( + _In_ IHttpApplicationStopProvider * pProvider ) { - UNREFERENCED_PARAMETER(pProvider); - // Retrieve the path that has changed. - PCWSTR pwszChangePath = pProvider->GetChangePath(); + IHttpApplication* pApplication = pProvider->GetApplication(); + + PCWSTR pwszChangePath = pApplication->GetAppConfigPath(); // Test for an error. if (NULL != pwszChangePath &&