diff --git a/src/Hosting/Hosting/src/WebHostExtensions.cs b/src/Hosting/Hosting/src/WebHostExtensions.cs index e73399c419..6814d1d49f 100644 --- a/src/Hosting/Hosting/src/WebHostExtensions.cs +++ b/src/Hosting/Hosting/src/WebHostExtensions.cs @@ -135,18 +135,21 @@ namespace Microsoft.AspNetCore.Hosting { void Shutdown() { - if (!cts.IsCancellationRequested) + try { - if (!string.IsNullOrEmpty(shutdownMessage)) - { - Console.WriteLine(shutdownMessage); - } - try + if (!cts.IsCancellationRequested) { + if (!string.IsNullOrEmpty(shutdownMessage)) + { + Console.WriteLine(shutdownMessage); + } cts.Cancel(); } - catch (ObjectDisposedException) { } } + // When hosting with IIS in-process, we detach the Console handle on main thread exit. + // Console.WriteLine may throw here as we are logging to console on ProcessExit. + // We catch and ignore all exceptions here. Do not log to Console in thie exception handler. + catch (Exception) { } // Wait on the given reset event resetEvent.Wait(); @@ -184,4 +187,4 @@ namespace Microsoft.AspNetCore.Hosting await host.StopAsync(); } } -} \ No newline at end of file +}