Browse Source

Catch all exceptions from Exit shutdown (master). (#12522)

Justin Kotalik 6 years ago
parent
commit
69feac2633
1 changed files with 10 additions and 8 deletions
  1. 10 8
      src/Hosting/Hosting/src/Internal/WebHostLifetime.cs

+ 10 - 8
src/Hosting/Hosting/src/Internal/WebHostLifetime.cs

@@ -62,19 +62,21 @@ namespace Microsoft.AspNetCore.Hosting
 
         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();
         }