IIS?部署?.NET6?WebApi?應(yīng)用的實現(xiàn)步驟
Step1、安裝IIS管理器
左下角放大鏡搜索:服務(wù)器管理器

右上角,點擊“管理”:

選擇“添加角色和功能”:

直接“下一步”:

選擇“基于角色或基于功能的安裝”:

選中服務(wù)器:

勾選“Web服務(wù)器”:

勾選“.NET Framework 4.7 功能”:

執(zhí)行安裝之后,可以在放大鏡搜索到“IIS”:

Step2、安裝 Hosting Bundle
下載地址:
https://dotnet.microsoft.com/en-us/download/dotnet/6.0

安裝:



重啟服務(wù)器,查看模塊:

已包含“ASP.NET Core Module v2”模塊:

Step3、代碼打包發(fā)布
dotnet publish v2.csproj -c Release -r win-x64 --self-contained false -o Publish/V1.0.0
參數(shù)解釋:
-c Release:指定生成配置為 Release(優(yōu)化版本,移除調(diào)試符號)。-r win-x64:指定目標(biāo)運行時為 Windows x64。--self-contained false:不包含 .NET 運行時,依賴用戶系統(tǒng)已安裝的 .NET 環(huán)境。-o Publish/V1.0.0:輸出路徑為Publish/V1.0.0。
最終效果:
- 輸出內(nèi)容:僅應(yīng)用程序文件(.exe、程序集 .dll)和第三方依賴項。
- 體積:較?。▋H應(yīng)用代碼)。

Step4、IIS 配置網(wǎng)站
右鍵添加網(wǎng)站:

名稱隨便填:

應(yīng)用池配置:

測試:


日志:

Step5、配置 Https
這里使用自簽名證書做演示,IIS面板打開“服務(wù)器證書”:

選擇“創(chuàng)建自簽名證書”:

隨便填個名字:

生成的證書:

右鍵添加網(wǎng)站,這里注意使用“https”:

選擇剛剛生成的證書:


啟動報錯:

萬維網(wǎng)發(fā)布服務(wù) (w3svc) 已停止。除非萬維網(wǎng)發(fā)布服務(wù)正在運行,否則無法啟動網(wǎng)站。
解決方案:
- 按下 Win + R,輸入
services.msc,回車。 - 在服務(wù)列表中找到 “World Wide Web Publishing Service”。
- 如果狀態(tài)為“已停止”,右鍵點擊并選擇“啟動”。




報錯:

ERR_SSL_KEY_USAGE_INCOMPATIBLE
這個錯誤是 Chrome、Edge 等現(xiàn)代瀏覽器為了強化安全策略而引入的,根源在于 IIS 管理器生成的默認(rèn)自簽名證書缺少一個關(guān)鍵的密鑰用法:DigitalSignature。
以管理員身份打開 Windows PowerShell,運行以下命令:
New-SelfSignedCertificate -FriendlyName "Your Certificate Name" -DnsName "localhost" -KeyUsage DigitalSignature -CertStoreLocation cert:\LocalMachine\My -NotAfter (Get-Date).AddYears(10)

命令參數(shù)說明:
- -FriendlyName “Your Certificate Name”:證書的顯示名稱,可以自定義,例如 “My Dev Certificate”。
- -DnsName “localhost”:這是最重要的參數(shù)之一。指定證書要綁定的域名或主機名。如果你是通過 IP 地址(如 127.0.0.1)或具體計算機名訪問網(wǎng)站,請務(wù)必將 localhost 替換為對應(yīng)的值。
- -KeyUsage DigitalSignature:這是修復(fù)錯誤的關(guān)鍵。為證書添加瀏覽器強制要求的數(shù)字簽名密鑰用法。
- -CertStoreLocation cert:\LocalMachine\My:將證書安裝到本地計算機的“個人”證書存儲中,這樣 IIS 才能識別并使用它。
- -NotAfter (Get-Date).AddYears(10):將證書的有效期設(shè)置為10年,避免頻繁更換的麻煩。
在 IIS 中綁定新證書:


測試:

IIS 回收配置
防止后臺定時服務(wù)被IIS回收:
- 步驟 1:打開應(yīng)用程序池高級設(shè)置
打開 IIS 管理器。
在左側(cè)選擇 應(yīng)用程序池,找到目標(biāo)應(yīng)用程序池并右鍵選擇 高級設(shè)置。

- 步驟 2:關(guān)閉固定時間與內(nèi)存回收
在 回收 部分: 固定時間間隔(分鐘) → 設(shè)置為 0 ; 虛擬內(nèi)存限制(KB) → 設(shè)置為 0 ; 專用內(nèi)存限制(KB) → 設(shè)置為 0

這樣可避免因時間或內(nèi)存限制觸發(fā)的自動回收。
- 步驟 3:關(guān)閉空閑超時
在 進程模型 部分: 閑置超時(分鐘) → 設(shè)置為 0

此項控制在無請求時是否終止工作進程,設(shè)為 0 表示永不因空閑而終止。
- 步驟 4:可選優(yōu)化
將 啟動模式 設(shè)置為 AlwaysRunning,確保應(yīng)用程序池在 IIS 啟動后立即運行。

將 發(fā)生配置更改時禁止回收 設(shè)為 True,防止配置更改觸發(fā)回收。

補充:Hosting Bundle
.NET Core Hosting Bundle 是微軟官方提供的一個軟件包,專門用于在 Windows 服務(wù)器上通過 IIS 托管和運行 ASP.NET Core 應(yīng)用程序。你可以將它理解為一座橋梁,無縫連接了 ASP.NET Core 應(yīng)用與 IIS 服務(wù)器。
核心組件與作用
這個安裝包之所以關(guān)鍵,是因為它集合了讓 ASP.NET Core 應(yīng)用在 IIS 上運行所需的幾乎所有核心組件:
| 組件名稱 | 主要作用 |
|---|---|
| .NET Core 運行時 (.NET Core Runtime) | 提供了運行 .NET 應(yīng)用程序所需的基礎(chǔ)環(huán)境,包括垃圾回收器、即時編譯器(JIT)和核心庫等。 |
| ASP.NET Core 模塊 (ANCM / ASP.NET Core Module) | 這是一個關(guān)鍵的 IIS 模塊。它充當(dāng)了反向代理的角色,負(fù)責(zé)將來自 IIS 的請求轉(zhuǎn)發(fā)給后臺的 ASP.NET Core 應(yīng)用(即 Kestrel 服務(wù)器),從而實現(xiàn)了 IIS 與應(yīng)用的集成。 |
| .NET Core 庫 (.NET Core Library) | 提供了 .NET 應(yīng)用程序運行所需的基礎(chǔ)類庫支持。 |
主要優(yōu)勢
相比單獨安裝運行時和其他組件,選擇 Hosting Bundle 有幾個明顯的好處:
- 簡化部署流程:你不需要分別安裝 .NET 運行時、ASP.NET Core 運行時和 IIS 模塊,一個安裝包就能搞定所有必備項,大大降低了部署的復(fù)雜性。
- 確保兼容與穩(wěn)定:這個捆綁包由微軟官方發(fā)布和維護,確保了各個組件之間的版本兼容性,為生產(chǎn)環(huán)境的穩(wěn)定運行提供了保障。
- 自動集成與生命周期管理:安裝后,它會自動在 IIS 中注冊
AspNetCoreModuleV2模塊。同時,IIS 也能自動檢測并管理 ASP.NET Core 應(yīng)用程序的啟動、停止和回收,讓運維更省心。
部署與配置要點
在安裝和配置時,有幾個關(guān)鍵點需要注意:
- 安裝順序很重要:建議先安裝好 IIS,再安裝 Hosting Bundle。如果順序反了,可能會遇到跨域或配置方面的問題,此時通常需要卸載并重新安裝 Hosting Bundle。
- 重啟 IIS 服務(wù):安裝完成后,建議重啟 IIS 或整個服務(wù)器,以確保所有環(huán)境變量和配置更改都已生效。
- 驗證安裝是否成功:
- 檢查 IIS 模塊:打開 IIS 管理器,點擊你的網(wǎng)站,在“模塊”功能中,應(yīng)該能看到名為
AspNetCoreModuleV2的條目。 - 配置應(yīng)用程序池:為你的網(wǎng)站創(chuàng)建應(yīng)用程序池時,在“.NET CLR 版本”設(shè)置中選擇 “無托管代碼”。因為 ASP.NET Core 應(yīng)用在獨立的進程中運行,不依賴 IIS 的 .NET 運行時。
- 檢查 IIS 模塊:打開 IIS 管理器,點擊你的網(wǎng)站,在“模塊”功能中,應(yīng)該能看到名為
- 生產(chǎn)環(huán)境與 SDK:在生產(chǎn)服務(wù)器上,不需要安裝 .NET SDK。SDK 主要用于開發(fā)、編譯和發(fā)布,而 Hosting Bundle 已經(jīng)包含了運行應(yīng)用所需的一切。
總的來說,.NET Core Hosting Bundle 是你在 Windows Server + IIS 環(huán)境下部署 ASP.NET Core 應(yīng)用的核心工具。它通過集成運行時的必要組件和關(guān)鍵的 IIS 反向代理模塊,讓 .NET 應(yīng)用能夠在傳統(tǒng)強大的 IIS 服務(wù)器上高效、穩(wěn)定地運行。
到此這篇關(guān)于IIS 部署 .NET6 WebApi 應(yīng)用的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)IIS 部署 .NET6 WebApi 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
發(fā)布一個基于TokyoTyrant的C#客戶端開源項目
目前在網(wǎng)上關(guān)于TokyoCabinet(以下簡稱TC)和TokyoTyrant(以下簡稱TT)的資料已相對豐富了,但在.NET平臺上的客戶端軟件卻相對匱乏,因為做Discuz!NT企業(yè)版的關(guān)系,兩個月前開始接觸TC和TT,開始寫相關(guān)的客戶端代碼。2010-07-07
asp.net 使用Response.Filter 過濾非法詞匯
一般信息發(fā)布網(wǎng)站,論壇等均具有實現(xiàn)非法詞匯過濾功能,即當(dāng)用戶錄入非法詞匯時,進行替換,使其無法顯示到頁面上,針對此種功能,通常采用的時,在讀取時,在讀到非法詞匯后,進行替換。2010-03-03
ABP引入SqlSugar框架的簡單版創(chuàng)建使用
這篇文章主要為大家介紹了ABP引入SqlSugar框架的簡單版創(chuàng)建使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04
詳解ASP.NET Core 之 Identity 入門(一)
本篇文章主要介紹了ASP.NET Core 之 Identity 入門,主要負(fù)責(zé)對用戶的身份進行認(rèn)證,有興趣的可以了解一下。2016-12-12
徹底解決ASP.NET MD5加密中文結(jié)果和ASP不一致的問題
ASP.NET MD5加密中文結(jié)果和ASP不一致的問題的解決方法2009-07-07
ASP.NET Core3.1 Ocelot負(fù)載均衡的實現(xiàn)
這篇文章主要介紹了ASP.NET Core3.1 Ocelot負(fù)載均衡的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
vs2012創(chuàng)建的ado.net模型無法實例化的解決方案
本文給大家分享的是升級vs2012后,發(fā)現(xiàn)創(chuàng)建數(shù)據(jù)模型無法實例化使用,嘗試了很多種方法,最后在度娘的幫助下,才解決了這個問題,這里記錄下來,分享給大家。2015-03-03
.NET CORE中比較兩個文件內(nèi)容是否相同的最快方法
這篇文章主要給大家介紹了關(guān)于.NET CORE中比較兩個文件內(nèi)容是否相同的最快方法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用.NET CORE具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
ASP.NET中MVC傳遞數(shù)據(jù)的幾種形式總結(jié)
這篇文章主要介紹了ASP.NET中MVC傳遞數(shù)據(jù)的幾種形式,以實例形式較為詳細的分析總結(jié)了MVC數(shù)據(jù)傳遞的相關(guān)技巧與注意事項,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10

