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記錄日志,就能看到是否是網站內部邏輯運行出錯
- 新建一個空白的網站,發布出來部署試試,排除目標機器環境是否存在問題