一文講通.NET Core部署到Windows IIS最全解決方案

回顧之前的ASP.NET的經典託管

image-20210126160117728

在經典ASP.NET應用程序中,所有一切都託管在IIS工作進程中(w3wp.exe),這也被稱爲IIS應用程序池。ASP.NET程序被託管在應用程序池中,並且被按照IIS內建的ASP.NET託管特性所實例化。當請求從http.sys傳入到ASP.NET應用程序管道時,本地運行時管理器會實例化一個代表應用程序的.NET運行時,同時引入HttpRuntime對象用來處理這個請求。來自http.sys的請求被派送到對應的應用程序池和HttpRuntime實例的託管站點。

image-20210126160151908

.net coreasp.net發佈有點不一樣,ASP.NET Core不再由IIS工作進程(w3wp.exe)託管,而是使用自託管Web服務器(Kestrel)運行,IIS則是作爲反向代理的角色轉發請求到Kestrel不同端口的ASP.NET Core程序中,隨後就將接收到的請求推送至中間件管道中去,處理完你的請求和相關業務邏輯之後再將HTTP響應數據重新回寫到IIS中,最終轉達到不同的客戶端(瀏覽器,APP,客戶端等)。

如果你的應用只接收來自內部網絡的請求,你可以只使用Kestrel本身。

asp.netcore application

如果你將你的應用部署在公共網絡上,我們建議你使用IIS,Nginx或者Apache作爲反向代理服務器。一個反向代理服務器接收來自網絡的HTTP請求並且在經過一些初步處理後將請求傳遞到Kestrel服務器。因爲Kestrel不支持在多進程間分享同一端口,所以應用並不能直接和Kestrel合作。當你在某個端口上配置Kestrel運行偵聽時,不算主機頭如何標識,Kestrel會爲該端口處理所有的流量。反向代理可以爲多個應用共享唯一端口並將流量發送給Kestrel。

image-20210125165051150

AspNetCoreModule,它是其中一個的IIS模塊,請求進入到IIS之後便立即由它轉發,並迅速重定向到ASP.NET Core項目中,這時候我們無需設置應用程序池來託管我們的代碼,它只負責轉發請求而已。

1、檢查是否安裝了IIS

在瀏覽器中輸入:http://localhost:如果得到如下"Internet information Services"歡迎頁面,則IIS已經安裝且運行正常;如果得到“server not found"(找不到服務器)則IIS未安裝或已經停止運行

image-20210125165102931

2、若沒有安裝IIS

2.1、打開控制面板——程序

程序

2.2、點擊“啓用或關閉Windows功能”

啓用或關閉Windows功能

2.3、點擊“Internet Information Services”,然後在打開的列表中勾選你需要的功能,點擊確定

Internet Information Services

2.4、接着windows會自動下載並安裝您勾選的系統,耐心等待完成

安裝iis

當出現“Windows已完成請求的更改”的時候就說明完成了,點擊立即重新啓動按鈕。

電腦重啓後,在IE瀏覽器地址欄中輸入localhost,如果能正常打開就說明iis安裝成功了

iis安裝成功

3、IIS安裝完成,安裝AspNetCoreModule

IIS和ASP.NET Core 之間的對接由AspNetCoreModule提供

1、安裝.NET Core Windows Server Hosting

地址:

https://www.microsoft.com/net/permalink/dotnetcore-current-windows-runtime-bundle-installer

2、安裝完成後,打開如下頁面,雙擊IIS管理器

雙擊IIS管理器

3、選擇左側樹的根目錄後,在右側選擇模塊,如下圖所示。

模塊

4、安裝完成後再模塊中會顯示AspNetCoreModuleV2模塊

AspNetCoreModuleV2

4、創建網站

添加網站:

網站—>右鍵添加網站

添加網站

在上圖中,我們創建了一個網站名爲:RDICoreWeb50,並指定了到我們網站的發佈路徑。

這兒最重要的一步就是要設置網站的“應用程序池”。

在IIS左側選擇“應用程序池”,在右則可以看到我們網站使用的“RDICoreWeb50”,雙擊打開,並做如何配置: 應用程序池設置

5、VS2019發佈

Vs2019發佈我們可以直接發佈到IIS,也可以發佈到本地目錄,再用IIS的配置指向該目錄。

5.1、發佈到IIS

1、右鍵項目名稱,點擊發布

vs2019發佈項目

2、選擇左路側的發佈,單擊“啓動”。

啓動

3、選擇Web服務器。

選擇Web服務器

4、單擊“下一步”,選擇Web部署。

Web部署

5、單擊“下一步”,配置Web服務器連接相關信息。

iis連接設置

6、如下界面即添加配置文件成功。

發佈信息

上圖我們可以發佈到IIS,也可以發佈到本地目錄下,再用IIS指向該目錄。

5.2、通過命令行發佈應用程序

在程序包管理控制檯輸入dotnet publish --output " E:\WebSiteForIIS\RDICoreWeb50"回車(路徑和創建網站的路徑相同)

通過命令行發佈應用程序

5.3、發佈到本地文件夾,再用IIS指定發佈的文件夾(推薦)

在發佈頁,我們選擇“文件夾”即可,如下圖所示。

發佈到本地文件夾

單擊“下一步”,設置需要發佈的本地文件夾,如下圖所示。

發佈的本地文件夾

單擊完成後,回到主界面,再單擊“發佈”按鈕,即可發佈到我們設置的目錄,如這兒設置爲:E:\WebSiteForIIS\RDICoreWeb50

發佈

在上圖中單擊“配置”,如下圖所示。

發佈設置

5.2、預覽發佈效果

發佈成功後,在IIS把目錄指定到我們的發佈目錄即可,如下圖所示。

預覽發佈效果1

發佈成功後,瀏覽發佈的程序,如下圖所示。

發佈效果-登錄界面

發佈效果-主界面

參考文章:

.NET Core部署到linux(CentOS)最全解決方案,常規篇

.NET Core部署到linux(CentOS)最全解決方案,進階篇(Supervisor+Nginx)

.NET Core部署到linux(CentOS)最全解決方案,高階篇(Docker+Nginx 或 Jexus)

.NET Core部署到linux(CentOS)最全解決方案,入魔篇(使用Docker+Jenkins實現持續集成、自動化部署)

一網打盡,一文講通虛擬機VirtualBox及Linux使用

RDIFramework.NET敏捷開發框架助力企業BPM業務流程系統的開發與落地

RDIFramework.NET敏捷開發框架 ━ 工作流程組件介紹

常用linux命令,開發必備

全新跨平臺版本.NET敏捷開發框架-RDIFramework.NET5.0震撼發佈


一路走來數個年頭,感謝RDIFramework.NET框架的支持者與使用者,大家可以通過下面的地址瞭解詳情。

RDIFramework.NET官方網站:http://www.rdiframework.net/

RDIFramework.NET官方博客:http://blog.rdiframework.net/

特別說明,框架相關的技術文章請以官方網站爲準,歡迎大家收藏!

RDIFramework.NET框架由海南國思軟件科技有限公司專業團隊長期打造、一直在更新、一直在升級,請放心使用!

歡迎關注RDIFramework.NET框架官方微信公衆號(微信號:guosisoft),及時瞭解最新動態。

使用微信掃描二維碼立即關注
微信號:guosisoft

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