溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何部署ASP.NET?Core程序到Windows系統(tǒng)

發(fā)布時(shí)間:2022-03-21 09:07:56 來源:億速云 閱讀:196 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“如何部署ASP.NET Core程序到Windows系統(tǒng)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何部署ASP.NET Core程序到Windows系統(tǒng)”吧!

一、創(chuàng)建項(xiàng)目

創(chuàng)建新項(xiàng)目的時(shí)候選項(xiàng)ASP.NET Core Web應(yīng)用程序,如下圖所示:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

配置新項(xiàng)目界面界面設(shè)置項(xiàng)目名稱和位置,如下圖所示:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

選擇.Net Core框架下面的ASP.NET Core 3.1,創(chuàng)建一個(gè)API項(xiàng)目,不勾選“為HTTPS配置”,如下圖所示:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

這樣就創(chuàng)建好了一個(gè)Web Api項(xiàng)目,我們?cè)L問項(xiàng)目:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

瀏覽器里面可以正常訪問,說明我們創(chuàng)建的項(xiàng)目沒有問題,接下來我們就把這個(gè)項(xiàng)目部署到windows系統(tǒng)上面。

二、發(fā)布項(xiàng)目

我們?cè)谏厦鎰?chuàng)建了一個(gè)Web Api項(xiàng)目,下面先發(fā)布項(xiàng)目。ASP.NET Core項(xiàng)目有兩種發(fā)布部署模式,下面分分進(jìn)行講解。

1、框架依賴

框架依賴(FDD):即Framework-dependent deployments的縮寫。這種發(fā)布方式依賴于Framework框架,即要部署的服務(wù)器上面必須按照ASP.NET Core 運(yùn)行時(shí)環(huán)境(ASP.NET Core Runtime)。這種部署方式是微軟默認(rèn)推薦的。下面我們看看如何使用框架依賴進(jìn)行部署。

我們?cè)陧?xiàng)目上面右鍵選擇“發(fā)布”:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

發(fā)布目標(biāo)選擇發(fā)布到文件夾,將文件發(fā)布到FDD文件夾,然后點(diǎn)擊“高級(jí)”:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

在發(fā)布界面,部署模式選擇框架依賴,目標(biāo)運(yùn)行時(shí)選擇默認(rèn)的可移植:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

我們看到目標(biāo)運(yùn)行時(shí)下面有好多選項(xiàng),這里選擇“可移植”,表示編譯后的文件可以部署到windows平臺(tái)、Max平臺(tái)、Linux平臺(tái)。如果只想部署到某一個(gè)平臺(tái),那么可以選擇具體的一個(gè)平臺(tái)。比如只想部署到Linux系統(tǒng)的x64架構(gòu),那么選擇“l(fā)inux-x64”即可。

最后點(diǎn)擊“保存”按鈕,然后發(fā)布即可:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

這樣就使用FDD方式發(fā)布成功了。我們看看發(fā)布后的文件:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

可以看到,框架依賴方式發(fā)布后的文件很少。

2、獨(dú)立部署

獨(dú)立(SCD):即Self-contained deployments的縮寫。這種方式表示獨(dú)立提供運(yùn)行時(shí)環(huán)境,即要部署的服務(wù)器上面不需要安裝ASP.NET Core運(yùn)行時(shí)環(huán)境即可部署。由于不需要預(yù)先安裝運(yùn)行時(shí)環(huán)境,所以這種發(fā)布方式編譯后的文件大小會(huì)比框架依賴方式編譯后的文件大小大。在發(fā)布的時(shí)候,部署模式選擇獨(dú)立即可:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

這時(shí)候目標(biāo)運(yùn)行時(shí)就沒有可移植選項(xiàng)了,由于我們要在windows系統(tǒng)上面部署,所以這里選擇win-x64。最后保存發(fā)布即可。發(fā)布完成以后,我們?cè)诳纯窗l(fā)布后的文件:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

可以看到,發(fā)布后的文件很多,這時(shí)因?yàn)榘l(fā)布的時(shí)候有一些程序運(yùn)行需要使用的dll文件夾會(huì)打包進(jìn)來。

三、部署

1、配置部署環(huán)境

我們?cè)谏厦娴牟襟E中,已經(jīng)把程序發(fā)布到文件夾了,下面進(jìn)行部署。我們先演示如何使用FCD模式進(jìn)行部署。FCD模式需要依賴于Framework框架,由于我們只是部署,所以只需要安裝ASP.NET Core Runtime即可,不需要安裝SDK。我們首先需要在服務(wù)器上面安裝ASP.NET Core runtime,去微軟官網(wǎng)下載相應(yīng)版本進(jìn)行安裝即可,這里選擇ASP.NET Core Runtime 3.1:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

這里選擇下載Hosting Bundle。因?yàn)镠osting Bundle包括了.Net Core運(yùn)行時(shí)和IIS支持。

下載完成以后,雙擊exe文件即可進(jìn)行安裝:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

安裝完成以后我們?cè)诿钚欣锩孑斎胂旅娴拿?,檢查是否安裝成功:

dotnet --info

如下圖所示:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

可以看到提示我們已經(jīng)安裝了.NET Core runtimes環(huán)境,沒有安裝SDK。

由于我們需要部署到IIS上面,所以安裝完以后要重啟電腦,或者使用下面的命令行重啟IIS服務(wù):

net stop was /y
net start w3svc

如下圖所示:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

注意:要以管理員身份運(yùn)行命令行,否則會(huì)報(bào)拒絕訪問的錯(cuò)誤

還可以管理服務(wù)器里面重啟啟動(dòng)IIS,如下圖所示:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

2、控制臺(tái)方式部署

我們先使用控制臺(tái)的方式進(jìn)行部署。進(jìn)入發(fā)布后的路徑,執(zhí)行下面的命令,以命令行的方式進(jìn)行啟動(dòng):

dotnet dll文件名稱

如下圖所示:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

可以看到項(xiàng)目已經(jīng)啟動(dòng)了,正在監(jiān)聽5000端口,我們?cè)跒g覽器里面訪問下面的url地址:http://localhost:5000/weatherforecast

如何部署ASP.NET?Core程序到Windows系統(tǒng)

可以看到能夠正常返回信息。

這里測(cè)試的時(shí)候是在Windows服務(wù)器上部署的,如果是在個(gè)人電腦上面部署,在瀏覽器里面瀏覽的時(shí)候會(huì)直接在web頁面里面顯示。

我們是把程序部署到了服務(wù)器上面,在服務(wù)器上面可以瀏覽,那么在遠(yuǎn)程電腦上面能不能瀏覽呢?我們?cè)谶h(yuǎn)程電腦上面瀏覽:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

可以看到拒絕我們的訪問,這是為什么呢?因?yàn)楸O(jiān)聽的IP地址是localhost,如果想要遠(yuǎn)程電腦可以訪問,還需要使用urls參數(shù)進(jìn)行設(shè)置:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

這里使用了*號(hào),表示任意網(wǎng)址都可以訪問,我們?cè)俅卧L問:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

這次我們就可以訪問了。使用urls參數(shù)還可以指定訪問的端口號(hào),比如我們想監(jiān)聽8090端口,就可以使用下面的命令:

dotnet AspNetCoreDeployDemo.dll  --urls http://*:8090

直接以控制臺(tái)的方式部署程序,一般適合于我們自己開發(fā)調(diào)試程序,真實(shí)的生產(chǎn)環(huán)境中,不建議使用這種方式。這種方式是Kestrel服務(wù)器直接處理HTTP請(qǐng)求,在windows系統(tǒng)中,我們一般是把ASP.NET Core 程序部署在IIS上面,IIS作為反向代理服務(wù)器使用。下面我們看看如何部署到IIS上。

3、部署到IIS

在傳統(tǒng)的.NET Framework中,ASP.NET程序發(fā)布到IIS上面,是由IIS的工作進(jìn)程(w3wp.exe)托管的,在任務(wù)管理器中可以找到該進(jìn)程。在ASP.NET Core程序中不再是由IIS工作進(jìn)程托管,而是使用自托管Web服務(wù)器(Kestrel)運(yùn)行,IIS則是作為反向代理的角色轉(zhuǎn)發(fā)請(qǐng)求到Kestrel不同端口的ASP.NET Core程序中,然后將接收到的請(qǐng)求推送至中間件管道中,處理完請(qǐng)求后在將HTTP響應(yīng)數(shù)據(jù)重新回寫到IIS中,最終通過IIS轉(zhuǎn)達(dá)到不同的客戶端。在這過程中,最重要的角色便是AspNetCoreModuleV2(asp.net core 2.0以前版本中是AspNetCoreModuleV2,asp.net core 2.x版本是AspNetCoreModule,從3.0開始又改回了AspNetCoreModuleV2),它是IIS中的一個(gè)模塊,HTTP請(qǐng)求進(jìn)入到IIS之后便立即由它轉(zhuǎn)發(fā),并迅速重定向到ASP.NET Core項(xiàng)目中。因?yàn)镮IS只是作為反向代理負(fù)責(zé)轉(zhuǎn)發(fā)請(qǐng)求,不負(fù)責(zé)監(jiān)聽HTTP請(qǐng)求端口,所以不需要使用應(yīng)用程序池來托管我們的代碼。

電腦上面安裝好了asp.net core 運(yùn)行時(shí)以后,在IIS的模塊里面會(huì)有AspNetCoreModule:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

雙擊“模塊”,查看里面是否有AspNetCoreModule模塊:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

接下來在IIS里面添加網(wǎng)站,如下圖所示:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

最后點(diǎn)擊“確定”按鈕,網(wǎng)站及部署完成。我們?cè)跒g覽器里面進(jìn)行瀏覽:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

這樣就可以訪問了。

在ASP.NET Core 3.x以前版本中,部署完網(wǎng)站之后,我們還需要設(shè)置應(yīng)用程序池,將.NET CLR版本設(shè)置為“無托管代碼”,在ASP.NET Core 3.x開始的版本中,無需在設(shè)置應(yīng)用程序池,部署完網(wǎng)站之后就可以直接訪問了。我們也可以設(shè)置應(yīng)用程序池為“無托管代碼”,如下圖所示:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

4、獨(dú)立部署

上面的兩種部署方式都是基于框架依賴發(fā)布后的文件進(jìn)行部署的,我們?cè)诳纯慈绾问褂锚?dú)立部署發(fā)布后的文件進(jìn)行部署,我們看到發(fā)布后有一個(gè)exe文件:

如何部署ASP.NET?Core程序到Windows系統(tǒng)

我們雙擊該exe文件,會(huì)看到直接以控制臺(tái)的方式啟動(dòng):

如何部署ASP.NET?Core程序到Windows系統(tǒng)

這時(shí)可以在瀏覽器里面進(jìn)行訪問了。這樣就可以部署了,真實(shí)生產(chǎn)中不建議使用這種方式。

感謝各位的閱讀,以上就是“如何部署ASP.NET Core程序到Windows系統(tǒng)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)如何部署ASP.NET Core程序到Windows系統(tǒng)這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI