IIS上部署你的ASP.NET?Core?Web?Api項(xiàng)目及Swagger(圖文)
1、概述
與ASP.NET時(shí)代不同,ASP.NET Core不再是由IIS工作進(jìn)程(w3wp.exe)托管,而是使用自托管Web服務(wù)器(Kestrel)運(yùn)行,IIS則是作為反向代理的角色轉(zhuǎn)發(fā)請求到Kestrel不同端口的ASP.NET Core程序中,隨后就將接收到的請求推送至中間件管道中去,處理完你的請求和相關(guān)業(yè)務(wù)邏輯之后再將HTTP響應(yīng)數(shù)據(jù)重新回寫到IIS中,最終轉(zhuǎn)達(dá)到不同的客戶端(瀏覽器,APP,客戶端等)。而配置文件和過程都會(huì)由些許調(diào)整,中間最重要的角色便是AspNetCoreModule,它是其中一個(gè)的IIS模塊,請求進(jìn)入到IIS之后便立即由它轉(zhuǎn)發(fā),并迅速重定向到ASP.NET Core項(xiàng)目中,所以這時(shí)候我們無需設(shè)置應(yīng)用程序池來托管我們的代碼,它只負(fù)責(zé)轉(zhuǎn)發(fā)請求而已。
這里我要做的是將一個(gè)asp.net core web api項(xiàng)目部署到iis上,同時(shí)包括將swagger也部署到iis,具體是在這篇文章基礎(chǔ)上,不明白的先看這個(gè)文章。
Asp.net core Web Api 配置swagger中文_hqwest的博客
2、安裝IIS
安裝完成,在控制面板--管理工具中可以看到Internet Information Services (IIS)管理器
3、運(yùn)行環(huán)境配置
部署asp.net core web api項(xiàng)目需要安裝環(huán)境,IIS默認(rèn)是不支持的,支持環(huán)境需要安裝net core運(yùn)行時(shí): dotnet-hosting-5.0.17-win.exe,原因就是前面概述中講的,.net core項(xiàng)目不是由iis工作進(jìn)程(w3wp.exe)托管,需要先下載dotnet-hosting-5.0.17-win.exe
下載地址:下載 .NET 5.0 下載 .NET 5.0 (Linux、macOS 和 Windows)
如果你是64位就點(diǎn)X64,如果是32位就點(diǎn)X86,根據(jù)你自己系統(tǒng)來選擇下載 .NET 5.0
總之下載的就是這個(gè),因?yàn)槲业捻?xiàng)目框架就是.net5,所以下的就是這個(gè),如果你是.net6或7那就要對應(yīng)的,總之是與你的項(xiàng)目框架是什么版本有關(guān),要對應(yīng)起來。
然后點(diǎn)擊運(yùn)行安裝,然后在IIS工具可以看到
就是這個(gè)騷騷騷的東西,害死人,必須要。模塊中存在就說明環(huán)境已經(jīng)安裝好了,沒有的話多重啟幾下IIS 或者重新再裝一次
4、修改項(xiàng)目配置
1、修改launchSettings.json
2、修改startup.cs中的Configure方法
原來是這樣的
49行修改成紅色框這樣的,實(shí)際是增加了一行代碼c.RoutePrefix = "";這個(gè)的意思是去掉路由的前綴。只改49行,其他都不要?jiǎng)印?/p>
3、修改屬性HouseSysWebApplication.xml
保存重新生成,啟動(dòng)項(xiàng)目,界面是這樣的,地址欄中沒有swagger這個(gè)地址,這才是正確的,說明在VS上成功了。
4、創(chuàng)建發(fā)布的目的
首先在D盤創(chuàng)建目錄,D:\website\HouseApp,目錄位置隨你自己定,這里是D:\website\HouseApp
并選擇目錄>右鍵>屬性>安全>編輯,也就是要給這個(gè)目錄添加everyone組的權(quán)限
5、發(fā)布項(xiàng)目
項(xiàng)目右鍵-》發(fā)布
發(fā)布的位置就是前面創(chuàng)建的目錄
完成,開始發(fā)布
6、IIS操作
這一步非常重要,重要得屌炸天。
7、修改web.config文件
用VS打開,添加一行內(nèi)容
原來是這樣的
<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="dotnet" arguments=".\HouseSysWebApplication.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /> </system.webServer> </location> </configuration> <!--ProjectGuid: A8FF705C-E12B-4F1A-87CE-47C8BC7A2C36-->
增加一個(gè)內(nèi)容
<environmentVariables> <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /> </environmentVariables>
完整的內(nèi)容是這樣的
<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="dotnet" arguments=".\HouseSysWebApplication.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" > <environmentVariables> <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /> </environmentVariables> </aspNetCore> </system.webServer> </location> </configuration> <!--ProjectGuid: A8FF705C-E12B-4F1A-87CE-47C8BC7A2C36-->
8、修改網(wǎng)站默認(rèn)首頁
9、啟動(dòng)網(wǎng)站
點(diǎn)擊第一個(gè)接口,效果還是很好的
這才是我們要的,后端寫的接口不能只在自己的電腦上,而應(yīng)該是在局域網(wǎng)的某臺(tái)服務(wù)器上,這樣項(xiàng)目成員才能通過瀏覽器訪問接口,重新 上面步驟,同樣可以部署在公網(wǎng)上,這樣在internet上就可以看到接口文檔了,如
到此這篇關(guān)于IIS上部署你的ASP.NET Core Web Api項(xiàng)目及Swagger(圖文)的文章就介紹到這了,更多相關(guān)IIS部署ASP.NET Core Web Api項(xiàng)目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ASP.NET設(shè)計(jì)網(wǎng)絡(luò)硬盤之文件夾實(shí)現(xiàn)
ASP.NET設(shè)計(jì)網(wǎng)絡(luò)硬盤之文件夾實(shí)現(xiàn)...2006-09-09Elasticsearch.Net使用教程 MVC4圖書管理系統(tǒng)(2)
這篇文章主要介紹了Elasticsearch.Net使用教程教會(huì)大家利用MVC4制作圖書管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11解析如何利用一個(gè)ASP.NET Core應(yīng)用來發(fā)布靜態(tài)文件
本文主要通過一些簡單的實(shí)例來體驗(yàn)一下如何在一個(gè)ASP.NET Core應(yīng)用中發(fā)布靜態(tài)文件。針對不同格式的靜態(tài)文件請求的處理,ASP.NET Core為我們提供了三個(gè)中間件,它們將是本系列文章論述的重點(diǎn)。有需要的朋友可以看下2016-12-12asp.net通過消息隊(duì)列處理高并發(fā)請求(以搶小米手機(jī)為例)
這篇文章主要介紹了asp.net通過消息隊(duì)列處理高并發(fā)請求(以搶小米手機(jī)為例),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03ASP.NET使用SignalR2實(shí)現(xiàn)服務(wù)器廣播
這篇文章介紹了ASP.NET使用SignalR2實(shí)現(xiàn)服務(wù)器廣播的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05云服務(wù)器下搭建ASP.NET Core環(huán)境
本文給大家分享的是在云服務(wù)器上搭建ASP.NET Core環(huán)境以及成功運(yùn)行官網(wǎng)DEMO的教程,十分的細(xì)致全面,有需要的小伙伴可以參考下。2016-07-07CheckBox控件默認(rèn)選中,提交時(shí)永遠(yuǎn)獲得選中狀態(tài)的實(shí)現(xiàn)代碼
下面小編就為大家?guī)硪黄狢heckBox控件默認(rèn)選中,提交時(shí)永遠(yuǎn)獲得選中狀態(tài)的實(shí)現(xiàn)代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05