我在 Windows Server 2016 上使用 IIS 版本 10。
当我部署新的 Web 应用程序时,它会进入“站点”下,其组织如下:
ServerNameA,然后是几个站点,包括使用 ApplicationPoolA 的 MySiteA。
部署成功后,我可以验证文件是新的。
该 Web 应用程序是一个使用 .NET Framework 4.5.2 的 Web 服务,最初在 Visual Studio 2019 中构建。
我正在使用 IIS基于 GUIInternet 信息服务 (IIS) 应用程序。因此,这是一个基于 Windows 的过程,不是以脚本为导向的方法。
我想要的是确保网站真正运行新文件,而无需重新启动甚至重新启动整个 IIS。
*通常,我会在 IIS 中执行以下步骤:*
从网站中的站点上下文菜单刷新 MySiteA
停止应用程序池A
启动应用程序池A
从网站中的站点上下文菜单刷新 MySiteA
我认为网站上的一个或两个“刷新”命令都是多余的,或者刷新就是所需要的全部。
是什么最低限度需要在 IIS 上执行哪些过程(步骤集)来保证使用新的部署文件?
我们可以假设部署本身是成功的,并且所有需要的文件都已存在。
答案1
回收(即重新启动)应用程序池就足以让它获取新部署的文件。
使用 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。
答案2
由于你正在使用 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