IIS 发布 ASP.NET Core 应用程序而不关闭 IIS 网站

Mic*_*ift 5 .net iis-8 asp.net-core

当前设置


我们目前将 ASP.NET Core 产品部署到:

  • Windows 服务器 2016
  • 托管在 IIS 版本 10.0.14393.0 上

我们有一个“站点”,其下有多个应用程序。每个应用程序都使用自己的应用程序池,并映射到不同的物理文件夹路径位置。

每个应用程序都由其自己的源代码 ASP.NET Core Server 项目表示

IIS结构

站点中子应用程序的 IIS 结构

问题


我们使用 Jenkins 进行 CI/CD,这是无法更改的。我们有 Powershell 脚本与 IIS 交互

没有 IIS 命令可以停止应用程序,只有站点,但我们理想情况下不希望在发布单个应用程序的新版本时关闭该站点。我们只想关闭该特定应用程序。

我们尝试通过停止与应用程序关联的 WebAppPool,然后等待(2 分钟...然后 5 分钟)来实现此目的。但即使在此之后,应用程序文件仍然被锁定。

我们最终关闭了 WebAppPool 和站点以释放文件,以便可以替换它们。

我知道必须有更好的方法来做到这一点。我们如何关闭单个应用程序,并阻止新的请求到达它,以便我们可以替换文件然后重新启动它?尽管“SITE”及其下的任何其他应用程序未更新,但仍在运行。我不介意更新应用程序的停机时间。

更新日期 6/8/2022

发现这个: https: //learn.microsoft.com/en-us/aspnet/core/host-and-deploy/app-offline? view=aspnetcore-6.0

去看看这是否可以解决我的问题。

Nic*_*ert 7

在应用程序的根文件夹中添加名为 app_offline.htm 的文件应该会强制 ASP.NET Core 模块关闭应用程序并停止处理传入请求。然后,您应该能够部署新文件,而不会对其他应用程序产生影响。