diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 8f6c0bfb28..bddecc1cb8 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -13,309 +13,309 @@
https://github.com/dotnet/blazor
cc449601d638ffaab58ae9487f0fd010bb178a12
-
+
https://github.com/dotnet/efcore
- 422fcb2a51c7616b0e2bbeb28c10309ed1b3b365
+ dcb27d309d099d7cb15dc19a5b9188feeb8795c8
-
+
https://github.com/dotnet/efcore
- 422fcb2a51c7616b0e2bbeb28c10309ed1b3b365
+ dcb27d309d099d7cb15dc19a5b9188feeb8795c8
-
+
https://github.com/dotnet/efcore
- 422fcb2a51c7616b0e2bbeb28c10309ed1b3b365
+ dcb27d309d099d7cb15dc19a5b9188feeb8795c8
-
+
https://github.com/dotnet/efcore
- 422fcb2a51c7616b0e2bbeb28c10309ed1b3b365
+ dcb27d309d099d7cb15dc19a5b9188feeb8795c8
-
+
https://github.com/dotnet/efcore
- 422fcb2a51c7616b0e2bbeb28c10309ed1b3b365
+ dcb27d309d099d7cb15dc19a5b9188feeb8795c8
-
+
https://github.com/dotnet/efcore
- 422fcb2a51c7616b0e2bbeb28c10309ed1b3b365
+ dcb27d309d099d7cb15dc19a5b9188feeb8795c8
-
+
https://github.com/dotnet/efcore
- 422fcb2a51c7616b0e2bbeb28c10309ed1b3b365
+ dcb27d309d099d7cb15dc19a5b9188feeb8795c8
-
+
https://github.com/dotnet/efcore
- 422fcb2a51c7616b0e2bbeb28c10309ed1b3b365
+ dcb27d309d099d7cb15dc19a5b9188feeb8795c8
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ 83bbcec3eb6a405f2023d452ae61494ce7e6d787
https://github.com/dotnet/arcade
diff --git a/eng/Versions.props b/eng/Versions.props
index 92ccd824a9..6d51ad7700 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -9,7 +9,7 @@
5
0
0
- 1
+ 2
@@ -64,85 +64,85 @@
3.8.0-2.20407.3
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
- 5.0.0-rc.1.20451.14
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
+ 5.0.0-rc.2.20451.27
- 5.0.0-rc.1.20451.14
+ 5.0.0-rc.2.20451.27
3.2.0
- 5.0.0-rc.1.20451.13
- 5.0.0-rc.1.20451.13
- 5.0.0-rc.1.20451.13
- 5.0.0-rc.1.20451.13
- 5.0.0-rc.1.20451.13
- 5.0.0-rc.1.20451.13
- 5.0.0-rc.1.20451.13
- 5.0.0-rc.1.20451.13
+ 5.0.0-rc.2.20452.1
+ 5.0.0-rc.2.20452.1
+ 5.0.0-rc.2.20452.1
+ 5.0.0-rc.2.20452.1
+ 5.0.0-rc.2.20452.1
+ 5.0.0-rc.2.20452.1
+ 5.0.0-rc.2.20452.1
+ 5.0.0-rc.2.20452.1
5.0.0-beta.20431.1
diff --git a/src/Servers/IIS/AspNetCoreModuleV2/CommonLib/ConfigurationSection.h b/src/Servers/IIS/AspNetCoreModuleV2/CommonLib/ConfigurationSection.h
index 8c9cece3e3..ef55c4ec53 100644
--- a/src/Servers/IIS/AspNetCoreModuleV2/CommonLib/ConfigurationSection.h
+++ b/src/Servers/IIS/AspNetCoreModuleV2/CommonLib/ConfigurationSection.h
@@ -30,6 +30,7 @@
#define CS_ENABLED L"enabled"
#define CS_ASPNETCORE_HANDLER_CALL_STARTUP_HOOK L"callStartupHook"
#define CS_ASPNETCORE_HANDLER_STACK_SIZE L"stackSize"
+#define CS_ASPNETCORE_SUPPRESS_RECYCLE_ON_STARTUP_TIMEOUT L"suppressRecycleOnStartupTimeout"
#define CS_ASPNETCORE_DETAILEDERRORS L"ASPNETCORE_DETAILEDERRORS"
#define CS_ASPNETCORE_ENVIRONMENT L"ASPNETCORE_ENVIRONMENT"
#define CS_DOTNET_ENVIRONMENT L"DOTNET_ENVIRONMENT"
diff --git a/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/InProcessOptions.cpp b/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/InProcessOptions.cpp
index c2ff5e0a7d..157f0dda22 100644
--- a/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/InProcessOptions.cpp
+++ b/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/InProcessOptions.cpp
@@ -66,6 +66,7 @@ InProcessOptions::InProcessOptions(const ConfigurationSource &configurationSourc
m_fSetCurrentDirectory = equals_ignore_case(find_element(handlerSettings, CS_ASPNETCORE_HANDLER_SET_CURRENT_DIRECTORY).value_or(L"true"), L"true");
m_fCallStartupHook = equals_ignore_case(find_element(handlerSettings, CS_ASPNETCORE_HANDLER_CALL_STARTUP_HOOK).value_or(L"true"), L"true");
m_strStackSize = find_element(handlerSettings, CS_ASPNETCORE_HANDLER_STACK_SIZE).value_or(L"1048576");
+ m_fSuppressRecycleOnStartupTimeout = equals_ignore_case(find_element(handlerSettings, CS_ASPNETCORE_SUPPRESS_RECYCLE_ON_STARTUP_TIMEOUT).value_or(L"false"), L"true");
m_dwStartupTimeLimitInMS = aspNetCoreSection->GetRequiredLong(CS_ASPNETCORE_PROCESS_STARTUP_TIME_LIMIT) * 1000;
m_dwShutdownTimeLimitInMS = aspNetCoreSection->GetRequiredLong(CS_ASPNETCORE_PROCESS_SHUTDOWN_TIME_LIMIT) * 1000;
diff --git a/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/InProcessOptions.h b/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/InProcessOptions.h
index 61a79664b2..fa0e19e849 100644
--- a/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/InProcessOptions.h
+++ b/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/InProcessOptions.h
@@ -118,6 +118,12 @@ public:
return m_strStackSize;
}
+ bool
+ QuerySuppressRecycleOnStartupTimeout() const
+ {
+ return m_fSuppressRecycleOnStartupTimeout;
+ }
+
InProcessOptions(const ConfigurationSource &configurationSource, IHttpSite* pSite);
static
@@ -139,6 +145,7 @@ private:
bool m_fWindowsAuthEnabled;
bool m_fBasicAuthEnabled;
bool m_fAnonymousAuthEnabled;
+ bool m_fSuppressRecycleOnStartupTimeout;
DWORD m_dwStartupTimeLimitInMS;
DWORD m_dwShutdownTimeLimitInMS;
DWORD m_dwMaxRequestBodySize;
diff --git a/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/inprocessapplication.cpp b/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/inprocessapplication.cpp
index 4f86cde3b8..1dd8a42c4b 100644
--- a/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/inprocessapplication.cpp
+++ b/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/inprocessapplication.cpp
@@ -169,7 +169,14 @@ IN_PROCESS_APPLICATION::LoadManagedApplication(ErrorContext& errorContext)
errorContext.errorReason = format("ASP.NET Core app failed to start after %d milliseconds", m_pConfig->QueryStartupTimeLimitInMS());
m_waitForShutdown = false;
- StopClr();
+ if (m_pConfig->QuerySuppressRecycleOnStartupTimeout())
+ {
+ StopClr();
+ }
+ else
+ {
+ Stop(/* fServerInitiated */false);
+ }
throw InvalidOperationException(format(L"Managed server didn't initialize after %u ms.", m_pConfig->QueryStartupTimeLimitInMS()));
}
diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/Inprocess/StartupTests.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/Inprocess/StartupTests.cs
index 220489dba6..01a7243f10 100644
--- a/src/Servers/IIS/IIS/test/Common.FunctionalTests/Inprocess/StartupTests.cs
+++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/Inprocess/StartupTests.cs
@@ -453,9 +453,10 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests.InProcess
}
[ConditionalFact]
+ [RequiresNewHandler]
public async Task StartupTimeoutIsApplied()
{
- // From what I can tell, this failure is due to ungraceful shutdown.
+ // From what we can tell, this failure is due to ungraceful shutdown.
// The error could be the same as https://github.com/dotnet/core-setup/issues/4646
// But can't be certain without another repro.
using (AppVerifier.Disable(DeployerSelector.ServerType, 0x300))
@@ -470,11 +471,45 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests.InProcess
var response = await deploymentResult.HttpClient.GetAsync("/");
Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
+ // Startup timeout now recycles process.
+ deploymentResult.AssertWorkerProcessStop();
+
+ EventLogHelpers.VerifyEventLogEvent(deploymentResult,
+ EventLogHelpers.InProcessFailedToStart(deploymentResult, "Managed server didn't initialize after 1000 ms."),
+ Logger);
+
+ if (DeployerSelector.HasNewHandler)
+ {
+ var responseContent = await response.Content.ReadAsStringAsync();
+ Assert.Contains("500.37", responseContent);
+ }
+ }
+ }
+
+ [ConditionalFact]
+ [MaximumOSVersion(OperatingSystems.Windows, WindowsVersions.Win10_20H1, SkipReason = "Shutdown hangs https://github.com/dotnet/aspnetcore/issues/25107")]
+ public async Task StartupTimeoutIsApplied_DisableRecycleOnStartupTimeout()
+ {
+ // From what we can tell, this failure is due to ungraceful shutdown.
+ // The error could be the same as https://github.com/dotnet/core-setup/issues/4646
+ // But can't be certain without another repro.
+ using (AppVerifier.Disable(DeployerSelector.ServerType, 0x300))
+ {
+ var deploymentParameters = Fixture.GetBaseDeploymentParameters(Fixture.InProcessTestSite);
+ deploymentParameters.TransformArguments((a, _) => $"{a} Hang");
+ deploymentParameters.WebConfigActionList.Add(
+ WebConfigHelpers.AddOrModifyAspNetCoreSection("startupTimeLimit", "1"));
+ deploymentParameters.HandlerSettings["suppressRecycleOnStartupTimeout"] = "true";
+ var deploymentResult = await DeployAsync(deploymentParameters);
+
+ var response = await deploymentResult.HttpClient.GetAsync("/");
+ Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
+
StopServer(gracefulShutdown: false);
- EventLogHelpers.VerifyEventLogEvents(deploymentResult,
- EventLogHelpers.InProcessFailedToStart(deploymentResult, "Managed server didn't initialize after 1000 ms.")
- );
+ EventLogHelpers.VerifyEventLogEvent(deploymentResult,
+ EventLogHelpers.InProcessFailedToStart(deploymentResult, "Managed server didn't initialize after 1000 ms."),
+ Logger);
if (DeployerSelector.HasNewHandler)
{