IIS部署.Net5全流程

介紹

Internet Information Services (IIS) 是一種靈活、安全且可管理的 Web 服務器,用於託管 Web 應用(包括 ASP.NET Core)。雖然我們的程序可以跨平臺了,不過還是有些服務是部署在windows服務器下的,下面我們就從頭開始部署下我們的程序到IIS.

本次示例環境:Windows Server 2012 R2 、vs2019、MySQL、.net5

安裝環境

支持平臺

  • Windows 7 或更高版本
  • Windows Server 2012 R2 或更高版本

本次代碼將安裝在Windows Server 2012 R2 版本上,感覺這個版本使用的公司還不少。

安裝ASP.NET Core託管捆綁包

安裝的文件應該和項目對應的版本相同,現在我項目使用的.net版本是5,那麼我應該也用5的,下載地址是:此處

安裝其他版本的請參考官網地址:.NET Core託管捆綁包

捆綁包可安裝 .NET Core 運行時、.NET Core 庫和 ASP.NET Core 模塊。 該模塊允許 ASP.NET Core 應用在 IIS 運行。

image.png

安裝後查看應用程序目錄

image.png

發佈項目

新建一個net5 WebAPI程序,當前程序主要包含一個用戶控制器(包含用戶信息的增刪改查)並且連接MySQL數據庫。

項目結構如下

image.png

源碼地址:https://gitee.com/AZRNG/my-example 需要自取

通過vs2019發佈我們的項目,然後將發佈後的項目拷貝到要部署的服務器上面。

image.png

發佈後如下

image.png

爲了正確設置 ASP.NET Core 模塊,web.config 文件必須存在於已部署應用的根路徑中。裏面可以設置一些環境、日誌等配置。

託管方式

進程內託管(IIS HTTP 服務器)

自 ASP.NET Core 3.0 起,默認情況下已爲部署到 IIS 的所有應用啓用進程內託管。

進程內託管在與其 IIS 工作進程相同的進程中運行 ASP.NET Core 應用。 進程內承載相較進程外承載提供更優的性能,因爲請求並不通過環回適配器進行代理,環回適配器是一個網絡接口,用於將傳出的網絡流量返回給同一計算機。

image

該圖說明了 IIS、ASP.NET Core 模塊和進程內託管的應用之間的關係

顯式配置進行內託管,需要在項目文件(.csproj)中增加如下配置

<PropertyGroup>
  <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>

進程外託管(Kestrel服務器)

由於運行 ASP.NET Core 進程與 IIS 工作進程分開,所以ASP.NET Core 模塊會負責進程管理。

image

該圖說明了 IIS、ASP.NET Core 模塊和進程外託管的應用之間的關係

進程外託管配置,在項目文件 ( .csproj) 中將 屬性的值設置爲 OutOfProcess

<PropertyGroup>
  <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>

關於兩種託管方式的差異:此處

部署項目

將項目進行發佈,然後拷貝到我們的服務器一個文件夾內。

打開IIS添加網站,選擇物理路徑爲我們項目文件

image.png

修改應用程序池爲無託管模式

image.png

啓動程序轉到swagger頁面

image.png

因爲當前我並沒有連接數據庫,直接調用接口應該報錯,我們看下錯誤日誌。啓動輸出日誌

image.png

說明我們項目已經部署成功了

image.png

如果出現了錯誤可以查看點此處查看常見錯誤解決方案:此處

題外話:當初部署2.1版本時候,windows server 2012r2需要打好幾個補丁,並且需要重啓多次,沒想到這次安裝net5這麼順利(服務器是從朋友那借的,我自己的是linux),如果你所在公司需要部署.net,還是推薦linux進行部署。

參考文檔

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

微信公衆號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章