ASP.NET Core搭建多層網站架構【14-擴展之部署到IIS】


2020/02/03, ASP.NET Core 3.1, VS2019, IIS 10, dotnet-hosting-3.1.1-win.exe

摘要:基於ASP.NET Core 3.1 WebApi搭建后端多層網站架構【14-擴展之部署到IIS】
在Windows上將ASP.NET Core網站部署到IIS

文章目錄

本章節由於並未對代碼做出改動,僅添加了發布配置文件,所以沒有上傳代碼分支(下一章節中可以看到本章節添加的發布配置文件)

本章節介紹了在Windows上將ASP.NET Core網站部署到IIS,部署環境是 Windows 10.0.18363 (企業版)

添加IIS功能

在控制面板-程序和功能中,添加IIS:

勾選選項默認即可
我這里是win10企業版,winserver服務器也是類似的開啟該功能

安裝dotnet-hosting

官網下載安裝dotnet-hosting,下載頁面

先選取對應的.NET Core版本,然后找到Hosting Bundle下載,下載下來安裝即可

編譯項目

對着MS.WebApi應用程序右擊,選擇發布

選擇文件夾我這里保持了默認bin\Release\netcoreapp3.1\publish\文件夾
點擊高級,進一步配置:

Release配置,部署模式為框架依賴,目標運行時為可移植,勾選刪除目標上的其他文件,最后點保存,創建該配置文件

最后點擊發布,項目即開始以release方式編譯
發布完成后,可以看到發布的文件都在目標文件夾中了:

  • 使用了Release配置,默認VS對Release的配置,依然會生成pdb調試文件,需要手動在項目屬性-生成-Release配置-高級-調試信息選擇為,之后該項目才不會生成pdb文件(注意調試的時候不能選擇為無,會導致無法調試)
  • 部署模式是框架依賴,獨立部署和框架依賴的區別,官網說的很清楚了,可以看官方文檔
  • 目標運行時,我選擇了可移植,不管在哪個平台都能運行;也可以依據目標機器,選擇具體的平台
  • 勾選刪除目標上的其他文件,確保多次發布,之前的遺留文件不會污染新的發布文件

IIS配置

選擇一個地方作為部署目錄,這里我選擇D盤下website文件夾(如果選擇C盤,記得要把該文件夾權限設為完全控制,否則網站沒有對該文件夾的修改權限)
將發布后生成的文件都拷貝至該目錄下:

打開IIS管理器

添加應用程序池

右擊應用程序池-添加應用程序池:

  • 名稱隨意
  • .NET CLR版本一定要選擇無托管代碼
  • 托管模式為集成

添加網站

右擊網站-添加網站,按以下配置添加:

  • 名稱隨意
  • 應用程序池要選擇上一步驟中添加的應用程序池
  • 物理路徑是之前步驟中選定的website文件夾
  • 這里我修改了端口號為5001

至此,部署已完成

測試部署前需確認:

  • 網站appsettings.json中設置的數據庫連接地址是否能正常訪問、連接
  • dotnet-hosting-版本號-win.exe已安裝成功
  • IIS已配置成功
  • 如需局域網訪問,確認防火牆打開了對應端口(具體可以百度下,很簡單)

使用Postman調用接口,可以正常訪問則部署成功:

排查錯誤

如果遇到網站啟動失敗,對照官方文檔進行排錯

排錯思路:

  • 網站目錄下的web.config中stdoutLogEnabled值改為true,重新訪問網站,目錄下會生成錯誤日志,根據錯誤日志排錯或百度
  • 網站Program.cs下的Main方法中,使用try catch,並使用NLog記錄日志,就能看到是否是網站內部邏輯運行出錯
  • 新建一個空白的網站,發布出來部署試試,排除目標機器環境是否存在問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM