Quellcode durchsuchen

More logging in IISExpress shutdown (#6854)

Pavel Krymets vor 7 Jahren
Ursprung
Commit
8006e2d07f
1 geänderte Dateien mit 9 neuen und 5 gelöschten Zeilen
  1. 9 5
      src/Servers/IIS/IntegrationTesting.IIS/src/IISExpressDeployer.cs

+ 9 - 5
src/Servers/IIS/IntegrationTesting.IIS/src/IISExpressDeployer.cs

@@ -453,19 +453,23 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting.IIS
             internal static extern bool PostMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
         }
 
-        private static void SendStopMessageToProcess(int pid)
+        private void SendStopMessageToProcess(int pid)
         {
+            Logger.LogInformation($"Sending shutdown request to {pid}");
             for (var ptr = WindowsNativeMethods.GetTopWindow(IntPtr.Zero); ptr != IntPtr.Zero; ptr = WindowsNativeMethods.GetWindow(ptr, 2))
             {
-                uint num;
-                WindowsNativeMethods.GetWindowThreadProcessId(ptr, out num);
-                if (pid == num)
+                WindowsNativeMethods.GetWindowThreadProcessId(ptr, out var windowProcessId);
+                if (pid == windowProcessId)
                 {
                     var hWnd = new HandleRef(null, ptr);
-                    WindowsNativeMethods.PostMessage(hWnd, 0x12, IntPtr.Zero, IntPtr.Zero);
+                    if (!WindowsNativeMethods.PostMessage(hWnd, 0x12, IntPtr.Zero, IntPtr.Zero))
+                    {
+                        throw new InvalidOperationException($"Unable to PostMessage to process {pid}. LastError: {Marshal.GetLastWin32Error()}");
+                    }
                     return;
                 }
             }
+            throw new InvalidOperationException($"Unable to find main window for process {pid}");
         }
 
         private void GracefullyShutdownProcess(Process hostProcess)