【问题标题】:Stop IIS-Site and all running sessions / applications停止 IIS 站点和所有正在运行的会话/应用程序
【发布时间】:2020-05-10 02:22:22
【问题描述】:

我想停止一个 IIS 站点,将我的新文件/应用程序复制到它,然后通过 PowerShell 脚本自动重启该站点。

当我通过 IIS-Manager-GUI 执行此操作时(右键单击站点 --> 停止),一切正常。该站点无法访问,所有客户端立即断开连接(使用 SignalR)。我替换了我的文件并通过 GUI 重新启动。

如果我尝试使用 PowerShell Stop-IISSite 进行相同操作,则新请求无法访问该站点,但该应用程序似乎可以在其上运行并且现有客户端继续工作(有点)。如果我尝试复制我的文件,应用程序文件仍被锁定且无法替换。

系统是带有 IIS 10.0 的 Win2019 Nano Server,运行 Asp.Net Core 3.1 应用程序(进程集成 AppPool)。

这是我的 PS 代码:

  Stop-IISSite -Name siteToReplace -confirm:$False;
  Write-Host -NoNewLine 'Site siteToReplace is stopped, copy new files now..!';
  $null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');
  Start-IISSite -Name siteToReplace;

我在这里缺少什么?为什么 Stop-IISSite 的工作方式与 UI 不同?如何停止一个站点,包括运行应用程序实例来替换文件,而不必停止整个 IIS?

【问题讨论】:

  • 我认为您可以通过停止应用程序池来解决此问题。 Stop-WebAppPool
  • Stop-WebAppPool 不在 iisadministration 模块中。但我决定:$s=Get-IISSite -Name siteToReplace; $s.Stop(); (Get-IISAppPool -name $s.Applications[0].ApplicationPoolName).Recycle(); <# COPY #>; $s.Start();,只要应用程序池不与其他网站一起使用,这应该可以解决问题......
  • 因为 IIS 管理器和 PowerShell cmdlet 不是建立在同一个基础上的,所以它们的行为差异很大,就像您发现的那样。 docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-10/…

标签: powershell asp.net-core iis application-pool


【解决方案1】:

所以,经过一番研究,我使用了 Stop-Website 命令,并注意到同一 WebAdministration 列表中的其他命令正在工作。

https://docs.microsoft.com/en-us/powershell/module/webadminstration/stop-website?view=winserver2012-ps

【讨论】:

    【解决方案2】:

    首先你需要安装这个模块Import-Module **IISAdministration**

    然后你可以有网站列表

    PS C:\WINDOWS\system32> Get-IISSite
    
    Name             ID   State      Physical Path                  Bindings
    ----             --   -----      -------------                  --------
    Default Web Site 1    Started    %SystemDrive%\inetpub\wwwroot  http *:80:
    mangos           2    Started    E:\DotAng\Release              http *:8000:
                                                                    http *:80:mango.com
    banana           3    Started    E:\testapi\testApi\WebApplicat http *:8080:
                                     ion1
    testapp.com      4    Started    E:\testapi\TestApiRelease      http *:800:testapp.com
    Mango            5    Started    E:\testapi\TestApiRelease      http *:8001:
    

    停止特定网站

    Stop-IISSite -Name "Mango"
    

    启动特定网站

    Start-IISSite -Name "Mango"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多