當前位置: 妍妍網 > 碼農

解決ASP.NET Core部署到IIS,更新計畫"另一個程式正在使用此檔,行程無法存取"

2024-01-29碼農

問題:部署到IIS上的ASP.NET Core計畫,在更新的時候會行程占用的錯誤

初步解決方案:

1,關閉應用程式池

2,關閉網站

3,更新計畫

缺點:網站沒法存取,部署計畫停的時間過長

查詢官方文件後,官方給出的方案:

如果套用正在執行,部署資料夾中的檔會被釘選。 在部署期間,無法覆蓋已釘選的檔。 若要在部署中解除已釘選的檔,請使用以下方法之一 停止套用池:

  • 使用 Web 部署並在計畫檔中參照 Microsoft.NET.Sdk.Web 系統會在 Web 套用目錄的根目錄中放置一個 app_offline.htm 檔 。 該檔存在時,ASP.NET Core 模組會在部署過程中正常關閉該套用並提供 app_offline.htm 檔 。 有關詳細資訊,請參閱 ASP.NET Core 模組配置參考。

  • 在伺服器上的 IIS 管理器中手動停止套用池。

  • 使用 PowerShell 刪除 app_offline.html (需要使用 PowerShell 5 或更高版本):

    PowerShell

    $pathToApp = 'PATH_TO_APP'
    # Stop the AppPool
    New-Item -Path $pathToApp app_offline.htm
    # Provide script commands here to deploy the app
    # Restart the AppPool
    Remove-Item -Path $pathToApp app_offline.htm


    參考:https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2