解决 ASP.NET Core 部署到 IIS,更新项目时文件夹正在使用错误
前言
雖然 ASP.NET Core 應用程序是跨平臺的,但我們還是經常將它部署到 Windows 的 IIS 下。
當 ASP.NET Core 站點運行時,它會鎖定正在使用的程序集,如果這時向站點目錄下復制文件進行更新,會提示文件被占用的錯誤:
這時,必須先關閉 IIS 站點,才能進行更新。
有什么比較簡單的解決方案呢?
ZipDeploy
ZipDeploy 允許你壓縮發布文件夾部署到正在運行的站點。這可以防止諸如 ERROR_FILE_IN_USE 或“被外部進程鎖定”之類的錯誤。
下面就用一個示例程序來演示如何使用 ZipDeploy。
1. 安裝ZipDeploy
創建一個 Web API 程序,然后引用Nuget包ZipDeploy。
修改Startup.cs,增加如下代碼:
public?void?ConfigureServices(IServiceCollection?services) {services.AddZipDeploy();... }2.發布應用
按照正常方式,將 Web API 程序程序發布到文件夾:
然后,創建 IIS 站點,將發布文件夾中的文件復制到 IIS 站點部署目錄下。
這時,應該可以正常訪問站點。
3.更新應用
假設現在修改了代碼,需要更新站點。
再次將 Web API 程序程序發布到文件夾,但是這次不是直接將文件復制到 IIS 站點部署目錄下。
而是將bin\Release\net5.0\publish下的所有文件壓縮成publish.zip文件,再將 zip 文件復制到 IIS 站點部署目錄下。
ZipDeploy 會將 publish.zip 文件解壓更新 IIS 站點,更新完成后將publish.zip改名為deployed.zip。
可以看到,更新成功,并沒有任何錯誤:
結論
用了 ZipDeploy,再也不用擔心 ASP.NET Core 應用程序部署到 IIS,更新項目時出現"文件夾正在使用"錯誤了!
想了解更多內容,請關注我的個人公眾號”My IO“
總結
以上是生活随笔為你收集整理的解决 ASP.NET Core 部署到 IIS,更新项目时文件夹正在使用错误的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: ASP.NET Core(十)Confi
 - 下一篇: 移除指定 global using 命名