Asp.net

發布已在執行的 dotnet 應用程序

  • April 19, 2019

我正在嘗試創建一個腳本來簡化發布 .NET Core 網站的過程。當我dotnet publish針對已經執行的伺服器執行時,我遇到了一個問題。伺服器是安裝了 dotnet 包的 IIS,因此 IIS 使用其應用程序池來啟動 dotnet。

這是我的批處理文件。我很高興使用另一種腳本類型:

cd src/app
dotnet build --no-incremental
dotnet publish --framework netcoreapp1.0 --configuration Release --output ../../dist

當我執行腳本時,我收到此錯誤:

“該程序無法訪問文件 ‘C:\inetpub\wwwroot\app\dist\app.dll’,因為它正被另一個程序使用。”

這是有道理的,看來我需要停止、部署和重新啟動 dotnet。我可以從腳本中做到這一點嗎?還是我解決這個問題的方法是錯誤的?

最好的方法是將app_offline.htm文件拖放到您的應用程序文件夾中。這將使 IISapp_offline.htm在您複製新版本時停止您的應用程序並將文件的內容提供給使用者。完成複制應用程序的新版本後,刪除該app_offline.htm文件,IIS 將啟動您的應用程序。您可以在我的文章中找到有關使用 IIS 執行 ASP.NET Core 應用程序的更多詳細資訊。

根據 Pawel 的回答,我有一個部署文件夾,其中包含我的app_offline.html文件和多個部署到 IIS 的腳本。這是我用來部署的範例腳本:

copy .\app_offline.htm C:\hosting\my-project\app_offline.htm
dotnet publish ../MyProject.csproj -r win-x64 -f netcoreapp2.1 --self-contained -c Release -o C:\hosting\my-project
del C:\hosting\my-project\app_offline.htm

引用自:https://stackoverflow.com/questions/42836465