Windows-Server-2016

IIS——確保部署的新版本 Web 應用程序是實際使用的程序

  • November 10, 2022

我在 Windows Server 2016 上使用 IIS,版本 10。

當我部署一個新的 Web 應用程序時,它位於“站點”下,其組織為:

ServerNameA 然後是幾個站點,包括 MySiteA,它使用 ApplicationPoolA。

成功部署後,我可以驗證文件是新的。

Web 應用程序專門是使用 .NET Framework 4.5.2 的 Web 服務,最初是在 Visual Studio 2019 中建構的。

我將 IIS 與基於 GUI 的Internet 資訊服務 (IIS) 應用程序一起使用。因此,這是一個基於 Windows 的過程,而不是面向腳本的方法。

我想要的是確保網站實際執行新文件而無需重新啟動甚至重新啟動所有 IIS。

通常,我在 IIS 中使用以下步驟執行以下過程:

  • 從站點下網站的上下文菜單中刷新 MySiteA
  • 停止應用程序池A
  • 啟動 ApplicationPoolA
  • 從站點下網站的上下文菜單中刷新 MySiteA

我假設網站上的一個或兩個“刷新”命令是多餘的,或者可能只需要刷新。

保證使用新部署文件所需的 IIS 上的最小程序(步驟集)是什麼?

可以假設部署本身是成功的,並且所有需要的文件都在那裡。

回收(即重新啟動)應用程序池應該足以讓它拾取新部署的文件。

這可以使用 PowerShell 輕鬆完成:https ://learn.microsoft.com/en-us/powershell/module/webadministration/restart-webapppool

相關問題:https ://stackoverflow.com/questions/38311797/recycle-an-application-pool-using-a-powershell-script 。

由於您正在使用 ASP.NET 4.x(和 ASP.NET Core),最方便的方法是使用app_offline.htm觸發完全重新載入 Web 內容,Microsoft 對此有很好的記錄,

https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/app-offline?view=aspnetcore-7.0

$pathToApp = '{PATH TO APP}'


New-Item -Path $pathToApp -Name "app_offline.htm" -ItemType "file"

# Provide script commands here to deploy the app

Remove-Item -Path $pathToApp\app_offline.htm

引用自:https://serverfault.com/questions/1115239