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

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

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

文章目錄數據庫

本章節因爲並未對代碼作出改動,僅添加了發佈配置文件,因此沒有上傳代碼分支(下一章節中能夠看到本章節添加的發佈配置文件)json

本章節介紹了在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方式編譯
發佈完成後,能夠看到發佈的文件都在目標文件夾中了:
app

  • 使用了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記錄日誌,就能看到是不是網站內部邏輯運行出錯
  • 新建一個空白的網站,發佈出來部署試試,排除目標機器環境是否存在問題
相關文章
相關標籤/搜索