Windows平臺部署Asp.Net Core應用

来源:https://www.cnblogs.com/star8521/archive/2020/05/20/12925400.html
-Advertisement-
Play Games

一. 簡介 Asp.Net Core 部署方式有兩種:依賴框架和獨立部署。 1. 框架依賴的部署: 顧名思義,依賴框架的部署 (FDD) 依賴目標系統上存在共用系統級版本的 .NET Core。 由於已存在 .NET Core,因此應用在 .NET Core 安裝程式間也是可移植的。 應用僅包含其自 ...


一. 簡介

Asp.Net Core 部署方式有兩種:依賴框架和獨立部署。

1. 框架依賴的部署:

顧名思義,依賴框架的部署 (FDD) 依賴目標系統上存在共用系統級版本的 .NET Core。 由於已存在 .NET Core,因此應用在 .NET Core 安裝程式間也是可移植的。 應用僅包含其自己的代碼和任何位於 .NET Core 庫外的第三方依賴項。 FDD 包含可通過在命令行中使用 dotnet 實用程式啟動的 .dll 文件。 例如,dotnet app.dll 就可以運行一個名為 app 的應用程式。

對於 FDD,僅部署應用程式和第三方依賴項。 不需要部署 .NET Core,因為應用將使用目標系統上存在的 .NET Core 版本。 這是定目標到 .NET Core 的 .NET Core 和 ASP.NET Core 應用程式的預設部署模型。

優點

① 不需要提前定義 .NET Core 應用將在其上運行的目標操作系統。 因為無論什麼操作系統,.NET Core 的可執行文件和庫都是用通用的 PE 文件格式,因此,無論什麼基礎操作系統,.NET Core 都可執行應用。

② 部署包很小。 只需部署應用及其依賴項,而無需部署 .NET Core 本身。

③ 許多應用都可使用相同的 .NET Core 安裝,從而降低了主機系統上磁碟空間和記憶體使用量。

這種模式是跨平臺的,只要在對應平臺裝上runtimes,然後把發佈包做成可移植的,同一個發佈包就可以跨平臺了。

缺點

① 僅當主機系統上已安裝你設為目標的 .NET Core 版本或更高版本時,應用才能運行。

② 如果不瞭解將來版本,.NET Core 運行時和庫可能發生更改。 在極少數情況下,這可能會更改應用的行為。

2. 獨立部署:

與 FDD 不同,獨立部署 (SCD) 不依賴目標系統上存在的共用組件。 所有組件(包括 .NET Core 庫和 .NET Core 運行時)都包含在應用程式中,並且獨立於其他 .NET Core 應用程式。 SCD 包括一個可執行文件(如 Windows 平臺上名為 app 的應用程式的 app.exe),它是特定於平臺的 .NET Core 主機的重命名版本,還包括一個 .dll 文件(如 app.dll),而它是實際的應用程式。

對於獨立部署,可以部署應用和所需的第三方依賴項以及生成應用所使用的 .NET Core 版本。 創建 SCD 不包括各種平臺上的 .NET Core 本機依賴項,因此運行應用前這些依賴項必須已存在。

從 NET Core 2.1 SDK(版本 2.1.300)開始,.NET Core 支持修補程式版本前滾。 在創建獨立部署時,.NET Core 工具會自動包含你的應用程式所指向的 .NET Core 版本的最新服務的運行時。 (最新服務的運行時包括安全修補程式和其他 bug 修複程式。)服務的運行時不需要存在於你的生成系統上;它會從 NuGet.org 自動下載。

FDD 和 SCD 部署使用單獨的主機可執行文件,使你可以使用發佈者簽名為 SCD 簽署主機可執行文件。

優點

① 可以對與應用一起部署的 .NET Core 版本具有單獨的控制權

② 請放心,目標系統可以運行你的 .NET Core 應用,因為你提供的是應用將在其上運行的 .NET Core 版本

缺點

① 由於 .NET Core 包含在部署包中,因此必須提前選擇為其生成部署包的目標平臺

② 部署包相對較大,因為需要將 .NET Core 和應用及其第三方依賴項包括在內。

他不能跨平臺,每個包都有對應的運行時,所以一份代碼只能在對應的平臺使用。

3. 部署的手段:文件系統、Web部署、FTP。

 

二. 文件系統發佈至IIS

文件系統發佈就是最傳統的一種發佈方式,利用開發工具生成一個發佈包,然後部署到IIS上。

伺服器上需要安裝.Net運行時和支持Module,下載地址:https://dotnet.microsoft.com/download/dotnet-core/2.2

1. 生成發佈包:

2. 部署到IIS:

和普通的Asp.Net Web項目相同,但需要把進程池改成 " 無托管代碼 "。

三. Web部署發佈至IIS

1. 前提:

安裝 dotnet-hosting(這裡的版本為2.2.4,該安裝包 包括:dotnet runtime 2.2.4 和 dotnet hosting)和 Web Deploy v3.6。

PS:runtime是dotnet程式的運行時,hosting是IIS支持dotnet core程式必備的模塊(安裝完後,IIS模塊中會有AspNetCoreModuleV2模塊),WebDeploy v3.6 是伺服器端支持“web部署”方式必備的程式,而安裝WebDeploy微軟推薦通過“web platform”這個軟體來安裝(類似於360軟體管家的性質)。

特別註意: 如果僅僅是本地運行,安裝runtimes就行了,如果是伺服器上部署,要安裝dotnet-hosting,裡面已經包含了對應版本的runtimes。

下載地址:https://dotnet.microsoft.com/download/dotnet-core

2. 必備環境的安裝

(一).  dotnet-hosting安裝

(1). 安裝dotnet-hosting,去【https://dotnet.microsoft.com/download/dotnet-core/2.2】地址,下載dotnet-hosting程式。

(2). 在WinServer2016上安裝【dotnet-hosting-2.2.4-win.exe】,安裝過程如下圖:

(3). 安裝完畢後,cmd命令【dotnet --list-runtimes】查看版本為 2.2.4 。在IIS模塊中查看有 AspNetCoreModuleV2.

(二). Web Deploy的安裝

(1). 先安裝【Web PlatForm】,通過 Web PlatForm 安裝 Web Deploy,下載地址:Https://www.microsoft.com/web/downloads/platform.aspx

PS:當然也可以直接安裝Web Deploy,下載地址: https://www.microsoft.com/zh-cn/download/details.aspx?id=43717

(2). 在裡面搜索 web deploy,進行 安裝:

3. 發佈步驟

(1). 選擇Web的方式進行發佈,輸入伺服器地址,賬號密碼、項目名稱、項目地址,如下圖:

(2). 點擊,發佈進行發佈,如下圖:發佈成功。

補充:此處可能第一次鏈接上不上去,發佈失敗,這個時候,去伺服器上把這個項目關閉,然後進行發佈,發佈成功後,在把該項目打開,以後再發佈就正常了。

假設還有問題,在發佈文件夾下新建要給 App_Offline.htm即可,用於關閉IIS。

 

四. FTP發佈至IIS

分析:FTP發佈不同於上述Web部署的模式,伺服器端不需要安裝任何額外的插件,僅需要給伺服器添加一個FTP發佈即可。

1. 服務端添加FTP發佈

(1). 選中IIS中的項目,添加FTP發佈,步驟如下圖:

添加完畢,點擊綁定,發現裡面多了一個FTP的21埠的地址。

 

 註:如果是阿裡雲或者其它雲伺服器,這裡使用項目埠8015和FTP的21埠,需要在伺服器的管理端配置一些,然後還要在伺服器的防火牆中配置一下入站,部分操作如下圖:

 

 

(2) 在VS中進行發佈,選擇FTP的模式發佈,配置 伺服器地址、登錄賬號、密碼、項目地址,點擊發佈即可。

 

 

五. Windows服務的形式發佈

很多情況下,我們不使用IIS,而是將Asp.Net Core程式發佈成Windows服務的形式,步驟如下:

1.  通過Nuget安裝程式集【 Microsoft.AspNetCore.Hosting.WindowsServices 】

  1. 通過右鍵項目,通過編輯項目的 xxx.csproj文件編輯項目的RID,RID的編輯規則如下圖:

該項目發佈在win10下,如下圖

  1. 在Main函數中將Run改成RunAsService,同時可以通過UseUrls來配置訪問地址,然後對該項目進行發佈。
  1. 利用sc相關的windows服務的指令進行服務的創建、開啟、查詢、停止、刪除。(指令需要以管理員身份運行)

(1) 創建服務:sc create MyService binPath= "c:\svc\AspNetCoreServiceSample.ex"

(2) 啟動服務:sc start MyService

(3) 檢查服務狀態:sc query MyService

(4) 停止服務:sc stop MyService

(5) 卸載服務:sc delete MyService  (刪除前必須先停止服務)

 


來源:https://www.cnblogs.com/yaopengfei/p/10733772.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...