一文講通.NET Core部署到Windows IIS最全解決方案
- 2021 年 3 月 2 日
- 筆記
- .netcore, .NET技術, c#, linux, RDIFramework.NET, Web前端, WinForm開發框架, 快速開發框架, 資料庫開發應用, 虛擬機, 電腦常用知識, 跨平台, 項目與團隊管理, 項目總結
回顧之前的ASP.NET的經典託管
在經典ASP.NET應用程式中,所有一切都託管在IIS工作進程中(w3wp.exe),這也被稱為IIS應用程式池。ASP.NET程式被託管在應用程式池中,並且被按照IIS內建的ASP.NET託管特性所實例化。當請求從http.sys傳入到ASP.NET應用程式管道時,本地運行時管理器會實例化一個代表應用程式的.NET運行時,同時引入HttpRuntime對象用來處理這個請求。來自http.sys的請求被派送到對應的應用程式池和HttpRuntime實例的託管站點。
.net core與asp.net發布有點不一樣,ASP.NET Core不再由IIS工作進程(w3wp.exe)託管,而是使用自託管Web伺服器(Kestrel)運行,IIS則是作為反向代理的角色轉發請求到Kestrel不同埠的ASP.NET Core程式中,隨後就將接收到的請求推送至中間件管道中去,處理完你的請求和相關業務邏輯之後再將HTTP響應數據重新回寫到IIS中,最終轉達到不同的客戶端(瀏覽器,APP,客戶端等)。
如果你的應用只接收來自內部網路的請求,你可以只使用Kestrel本身。
如果你將你的應用部署在公共網路上,我們建議你使用IIS,Nginx或者Apache作為反向代理伺服器。一個反向代理伺服器接收來自網路的HTTP請求並且在經過一些初步處理後將請求傳遞到Kestrel伺服器。因為Kestrel不支援在多進程間分享同一埠,所以應用並不能直接和Kestrel合作。當你在某個埠上配置Kestrel運行偵聽時,不算主機頭如何標識,Kestrel會為該埠處理所有的流量。反向代理可以為多個應用共享唯一埠並將流量發送給Kestrel。
AspNetCoreModule,它是其中一個的IIS模組,請求進入到IIS之後便立即由它轉發,並迅速重定向到ASP.NET Core項目中,這時候我們無需設置應用程式池來託管我們的程式碼,它只負責轉發請求而已。
1、檢查是否安裝了IIS
在瀏覽器中輸入://localhost:如果得到如下”Internet information Services”歡迎頁面,則IIS已經安裝且運行正常;如果得到「server not found”(找不到伺服器)則IIS未安裝或已經停止運行
2、若沒有安裝IIS
2.1、打開控制面板——程式
2.2、點擊「啟用或關閉Windows功能」
2.3、點擊「Internet Information Services」,然後在打開的列表中勾選你需要的功能,點擊確定
2.4、接著windows會自動下載並安裝您勾選的系統,耐心等待完成
當出現「Windows已完成請求的更改」的時候就說明完成了,點擊立即重新啟動按鈕。
電腦重啟後,在IE瀏覽器地址欄中輸入localhost,如果能正常打開就說明iis安裝成功了
3、IIS安裝完成,安裝AspNetCoreModule
IIS和ASP.NET Core 之間的對接由AspNetCoreModule提供
1、安裝.NET Core Windows Server Hosting
地址:
//www.microsoft.com/net/permalink/dotnetcore-current-windows-runtime-bundle-installer
2、安裝完成後,打開如下頁面,雙擊IIS管理器
3、選擇左側樹的根目錄後,在右側選擇模組,如下圖所示。
4、安裝完成後再模組中會顯示AspNetCoreModuleV2模組
4、創建網站
添加網站:
網站—>右鍵添加網站
在上圖中,我們創建了一個網站名為:RDICoreWeb50,並指定了到我們網站的發布路徑。
這兒最重要的一步就是要設置網站的「應用程式池」。
在IIS左側選擇「應用程式池」,在右則可以看到我們網站使用的「RDICoreWeb50」,雙擊打開,並做如何配置:
5、VS2019發布
Vs2019發布我們可以直接發布到IIS,也可以發布到本地目錄,再用IIS的配置指向該目錄。
5.1、發布到IIS
1、右鍵項目名稱,點擊發布
2、選擇左路側的發布,單擊「啟動」。
3、選擇Web伺服器。
4、單擊「下一步」,選擇Web部署。
5、單擊「下一步」,配置Web伺服器連接相關資訊。
6、如下介面即添加配置文件成功。
上圖我們可以發布到IIS,也可以發布到本地目錄下,再用IIS指向該目錄。
5.2、通過命令行發布應用程式
在程式包管理控制台輸入dotnet publish –output ” E:\WebSiteForIIS\RDICoreWeb50″回車(路徑和創建網站的路徑相同)
5.3、發布到本地文件夾,再用IIS指定發布的文件夾(推薦)
在發布頁,我們選擇「文件夾」即可,如下圖所示。
單擊「下一步」,設置需要發布的本地文件夾,如下圖所示。
單擊完成後,回到主介面,再單擊「發布」按鈕,即可發布到我們設置的目錄,如這兒設置為:E:\WebSiteForIIS\RDICoreWeb50
在上圖中單擊「配置」,如下圖所示。
5.2、預覽發布效果
發布成功後,在IIS把目錄指定到我們的發布目錄即可,如下圖所示。
發布成功後,瀏覽發布的程式,如下圖所示。
參考文章:
.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敏捷開發框架 ━ 工作流程組件介紹
全新跨平台版本.NET敏捷開發框架-RDIFramework.NET5.0震撼發布
一路走來數個年頭,感謝RDIFramework.NET框架的支援者與使用者,大家可以通過下面的地址了解詳情。
RDIFramework.NET官方網站://www.rdiframework.net/
RDIFramework.NET官方部落格://blog.rdiframework.net/
特別說明,框架相關的技術文章請以官方網站為準,歡迎大家收藏!
RDIFramework.NET框架由海南國思軟體科技有限公司專業團隊長期打造、一直在更新、一直在升級,請放心使用!
歡迎關注RDIFramework.NET框架官方微信公眾號(微訊號:guosisoft),及時了解最新動態。
使用微信掃描二維碼立即關注