首先結論是不支持,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 部署。