diff --git a/src/Hosting/Hosting/src/Internal/WebHostLifetime.cs b/src/Hosting/Hosting/src/Internal/WebHostLifetime.cs index 9d47fb68f5ab..19d90066479a 100644 --- a/src/Hosting/Hosting/src/Internal/WebHostLifetime.cs +++ b/src/Hosting/Hosting/src/Internal/WebHostLifetime.cs @@ -62,19 +62,21 @@ private void ProcessExit(object sender, EventArgs eventArgs) private 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(); }