代码之家  ›  专栏  ›  技术社区  ›  Martin M

基于站点名称停止IIS express进程

  •  0
  • Martin M  · 技术社区  · 6 年前

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

    我想使这部分自动,所以当我开始调试时,它将停止特定的站点。 如果我不停止它,那么它将重用当前正在运行的站点,但是如果我停止它,那么它将重新启动它。。

    它有可能发生吗?我知道如何找到PID,但我不知道PID后面的站点名称。。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Rodney Viana    6 年前

    我把这个脚本放在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文件。
    • 现在,在解决方案资源管理器上,右键单击并选择“属性”
    • 在左侧,选择“生成事件”
    • 将此设置为“预生成事件命令行”,以便在编译之前运行:

      echo powershell-文件“$(ProjectDir)stopiis.ps1”

      powershell-文件“$(ProjectDir)stopiis.ps1”

    Build Action

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