首先结论是不支持,ASP.NET Core 应用部署到到 IIS 后,在不停止应用池和应用的情况下,直接覆盖文件更新,会出现文件锁定 / 被占用的情况,导致必须要停止现有程序。
官方推出 IIS 的 shadow copying 方式也只能减少应用下线时间(前面两个链接是关于这种现象的讨论,最后两个链接是 shadow copying):
关于这种现象的讨论:
- https://github.com/dotnet/aspnetcore/issues/3793
- https://github.com/dotnet/AspNetCore.Docs/issues/23733
官方 shadow copying 教程:
- https://learn.microsoft.com/zh-cn/aspnet/core/release-notes/aspnetcore-6.0?view=aspnetcore-6.0#shadow-copying-in-iis
- https://learn.microsoft.com/zh-cn/aspnet/core/release-notes/aspnetcore-7.0?view=aspnetcore-6.0#shadow-copying-in-iis
官方推荐通过 蓝绿部署 模式来实现 zero-downtime 部署。