根据站点名称停止 IIS 快速进程

Stop IIS express process based on site name

我正在处理的站点在 IIS 上有 3 个单独的站点 运行。 当我对特定库进行更改时,我需要使用它重新启动站点。我现在的做法是手动右键单击系统托盘中的 IIS Express 图标,然后单击 'Stop site',然后执行调试..

我想让那部分自动进行,所以每当我开始调试时,它都会停止那个特定的站点。 如果我不停止它,那么它只会重用当前的 运行 站点,但是如果我停止它,它就会重新启动它..

事件可能吗?我知道如何找到 PID,但我不知道 PID 后面的站点名称..

我在 PowerShell 中编写了这个脚本:

$site = 'Webapplication' # replace this by your site name (not case sensitive)
$process = Get-CimInstance Win32_Process -Filter "Name = 'iisexpress.exe'" | ? {$_.CommandLine -like "*/site:`"$site`"*" }
if($process -ne $null)
{
    Write-Host "Trying to stop $($process.CommandLine)"
    Stop-Process -Id $process.ProcessId
    Start-Sleep -Seconds 1 # Wait 1 second for good measure
    Write-Host "Process was stopped"
} else
{
   Write-Host "Website was not running"
}
  • 修改第一行以将网站名称替换为您的网站名称。保存这个 文件作为 stopiis.ps1 在您的项目文件夹(不是解决方案文件夹)上。
  • 现在,在解决方案资源管理器中,右键单击并选择属性
  • 在左侧,选择构建事件
  • 将其放在 'Pre-Build event command line' 上,以便在编译前 运行:

    echo powershell -File "$(ProjectDir)stopiis.ps1"

    powershell -File "$(ProjectDir)stopiis.ps1"

  • 注意:您不需要在管理模式下 运行 Visual Studio 因为 IISExpress.exe 运行 在您的帐户下