diff --git a/src/Servers/IIS/IntegrationTesting.IIS/src/IISExpressDeployer.cs b/src/Servers/IIS/IntegrationTesting.IIS/src/IISExpressDeployer.cs index 3fa6e5db0f..aa05bcd957 100644 --- a/src/Servers/IIS/IntegrationTesting.IIS/src/IISExpressDeployer.cs +++ b/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)