您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何部署ASP.NET Core程序到Windows系統”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何部署ASP.NET Core程序到Windows系統”吧!
創建新項目的時候選項ASP.NET Core Web應用程序,如下圖所示:
配置新項目界面界面設置項目名稱和位置,如下圖所示:
選擇.Net Core框架下面的ASP.NET Core 3.1,創建一個API項目,不勾選“為HTTPS配置”,如下圖所示:
這樣就創建好了一個Web Api項目,我們訪問項目:
瀏覽器里面可以正常訪問,說明我們創建的項目沒有問題,接下來我們就把這個項目部署到windows系統上面。
我們在上面創建了一個Web Api項目,下面先發布項目。ASP.NET Core項目有兩種發布部署模式,下面分分進行講解。
框架依賴(FDD):即Framework-dependent deployments的縮寫。這種發布方式依賴于Framework框架,即要部署的服務器上面必須按照ASP.NET Core 運行時環境(ASP.NET Core Runtime)。這種部署方式是微軟默認推薦的。下面我們看看如何使用框架依賴進行部署。
我們在項目上面右鍵選擇“發布”:
發布目標選擇發布到文件夾,將文件發布到FDD文件夾,然后點擊“高級”:
在發布界面,部署模式選擇框架依賴,目標運行時選擇默認的可移植:
我們看到目標運行時下面有好多選項,這里選擇“可移植”,表示編譯后的文件可以部署到windows平臺、Max平臺、Linux平臺。如果只想部署到某一個平臺,那么可以選擇具體的一個平臺。比如只想部署到Linux系統的x64架構,那么選擇“linux-x64”即可。
最后點擊“保存”按鈕,然后發布即可:
這樣就使用FDD方式發布成功了。我們看看發布后的文件:
可以看到,框架依賴方式發布后的文件很少。
獨立(SCD):即Self-contained deployments的縮寫。這種方式表示獨立提供運行時環境,即要部署的服務器上面不需要安裝ASP.NET Core運行時環境即可部署。由于不需要預先安裝運行時環境,所以這種發布方式編譯后的文件大小會比框架依賴方式編譯后的文件大小大。在發布的時候,部署模式選擇獨立即可:
這時候目標運行時就沒有可移植選項了,由于我們要在windows系統上面部署,所以這里選擇win-x64。最后保存發布即可。發布完成以后,我們在看看發布后的文件:
可以看到,發布后的文件很多,這時因為發布的時候有一些程序運行需要使用的dll文件夾會打包進來。
我們在上面的步驟中,已經把程序發布到文件夾了,下面進行部署。我們先演示如何使用FCD模式進行部署。FCD模式需要依賴于Framework框架,由于我們只是部署,所以只需要安裝ASP.NET Core Runtime即可,不需要安裝SDK。我們首先需要在服務器上面安裝ASP.NET Core runtime,去微軟官網下載相應版本進行安裝即可,這里選擇ASP.NET Core Runtime 3.1:
這里選擇下載Hosting Bundle。因為Hosting Bundle包括了.Net Core運行時和IIS支持。
下載完成以后,雙擊exe文件即可進行安裝:
安裝完成以后我們在命令行里面輸入下面的命令,檢查是否安裝成功:
dotnet --info
如下圖所示:
可以看到提示我們已經安裝了.NET Core runtimes環境,沒有安裝SDK。
由于我們需要部署到IIS上面,所以安裝完以后要重啟電腦,或者使用下面的命令行重啟IIS服務:
net stop was /y net start w3svc
如下圖所示:
注意:要以管理員身份運行命令行,否則會報拒絕訪問的錯誤
還可以管理服務器里面重啟啟動IIS,如下圖所示:
我們先使用控制臺的方式進行部署。進入發布后的路徑,執行下面的命令,以命令行的方式進行啟動:
dotnet dll文件名稱
如下圖所示:
可以看到項目已經啟動了,正在監聽5000端口,我們在瀏覽器里面訪問下面的url地址:http://localhost:5000/weatherforecast
可以看到能夠正常返回信息。
這里測試的時候是在Windows服務器上部署的,如果是在個人電腦上面部署,在瀏覽器里面瀏覽的時候會直接在web頁面里面顯示。
我們是把程序部署到了服務器上面,在服務器上面可以瀏覽,那么在遠程電腦上面能不能瀏覽呢?我們在遠程電腦上面瀏覽:
可以看到拒絕我們的訪問,這是為什么呢?因為監聽的IP地址是localhost,如果想要遠程電腦可以訪問,還需要使用urls參數進行設置:
這里使用了*號,表示任意網址都可以訪問,我們再次訪問:
這次我們就可以訪問了。使用urls參數還可以指定訪問的端口號,比如我們想監聽8090端口,就可以使用下面的命令:
dotnet AspNetCoreDeployDemo.dll --urls http://*:8090
直接以控制臺的方式部署程序,一般適合于我們自己開發調試程序,真實的生產環境中,不建議使用這種方式。這種方式是Kestrel服務器直接處理HTTP請求,在windows系統中,我們一般是把ASP.NET Core 程序部署在IIS上面,IIS作為反向代理服務器使用。下面我們看看如何部署到IIS上。
在傳統的.NET Framework中,ASP.NET程序發布到IIS上面,是由IIS的工作進程(w3wp.exe)托管的,在任務管理器中可以找到該進程。在ASP.NET Core程序中不再是由IIS工作進程托管,而是使用自托管Web服務器(Kestrel)運行,IIS則是作為反向代理的角色轉發請求到Kestrel不同端口的ASP.NET Core程序中,然后將接收到的請求推送至中間件管道中,處理完請求后在將HTTP響應數據重新回寫到IIS中,最終通過IIS轉達到不同的客戶端。在這過程中,最重要的角色便是AspNetCoreModuleV2(asp.net core 2.0以前版本中是AspNetCoreModuleV2,asp.net core 2.x版本是AspNetCoreModule,從3.0開始又改回了AspNetCoreModuleV2),它是IIS中的一個模塊,HTTP請求進入到IIS之后便立即由它轉發,并迅速重定向到ASP.NET Core項目中。因為IIS只是作為反向代理負責轉發請求,不負責監聽HTTP請求端口,所以不需要使用應用程序池來托管我們的代碼。
電腦上面安裝好了asp.net core 運行時以后,在IIS的模塊里面會有AspNetCoreModule:
雙擊“模塊”,查看里面是否有AspNetCoreModule模塊:
接下來在IIS里面添加網站,如下圖所示:
最后點擊“確定”按鈕,網站及部署完成。我們在瀏覽器里面進行瀏覽:
這樣就可以訪問了。
在ASP.NET Core 3.x以前版本中,部署完網站之后,我們還需要設置應用程序池,將.NET CLR版本設置為“無托管代碼”,在ASP.NET Core 3.x開始的版本中,無需在設置應用程序池,部署完網站之后就可以直接訪問了。我們也可以設置應用程序池為“無托管代碼”,如下圖所示:
上面的兩種部署方式都是基于框架依賴發布后的文件進行部署的,我們在看看如何使用獨立部署發布后的文件進行部署,我們看到發布后有一個exe文件:
我們雙擊該exe文件,會看到直接以控制臺的方式啟動:
這時可以在瀏覽器里面進行訪問了。這樣就可以部署了,真實生產中不建議使用這種方式。
感謝各位的閱讀,以上就是“如何部署ASP.NET Core程序到Windows系統”的內容了,經過本文的學習后,相信大家對如何部署ASP.NET Core程序到Windows系統這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。