1、概述
與ASP.NET時代不同,ASP.NET Core不再是由IIS工作進程(w3wp.exe)托管,而是使用自托管Web服務(wù)器(Kestrel)運行,IIS則是作為反向代理的角色轉(zhuǎn)發(fā)請求到Kestrel不同端口的ASP.NET Core程序中,隨后就將接收到的請求推送至中間件管道中去,處理完你的請求和相關(guān)業(yè)務(wù)邏輯之后再將HTTP響應(yīng)數(shù)據(jù)重新回寫到IIS中,最終轉(zhuǎn)達到不同的客戶端(瀏覽器,APP,客戶端等)。而配置文件和過程都會由些許調(diào)整,中間最重要的角色便是AspNetCoreModule,它是其中一個的IIS模塊,請求進入到IIS之后便立即由它轉(zhuǎn)發(fā),并迅速重定向到ASP.NET Core項目中,所以這時候我們無需設(shè)置應(yīng)用程序池來托管我們的代碼,它只負責(zé)轉(zhuǎn)發(fā)請求而已。
這里我要做的是將一個asp.net core web api項目部署到iis上,同時包括將swagger也部署到iis,具體是在這篇文章基礎(chǔ)上,不明白的先看這個文章。
Asp.net core Web Api 配置swagger中文_hqwest的博客-CSDN博客,
地址:https://blog.csdn.net/hqwest/article/details/129344051
2、安裝IIS
安裝完成,在控制面板--管理工具中可以看到Internet Information Services (IIS)管理器
3、運行環(huán)境配置
部署asp.net core web api項目需要安裝環(huán)境,IIS默認是不支持的,支持環(huán)境需要安裝net core運行時: dotnet-hosting-5.0.17-win.exe,原因就是前面概述中講的,.net core項目不是由iis工作進程(w3wp.exe)托管,需要先下載dotnet-hosting-5.0.17-win.exe
下載地址:下載 .NET 5.0?下載 .NET 5.0 (Linux、macOS 和 Windows)
如果你是64位就點X64,如果是32位就點X86,根據(jù)你自己系統(tǒng)來選擇下載 .NET 5.0?
?總之下載的就是這個,因為我的項目框架就是.net5,所以下的就是這個,如果你是.net6或7那就要對應(yīng)的,總之是與你的項目框架是什么版本有關(guān),要對應(yīng)起來。
?然后點擊運行安裝,然后在IIS工具可以看到
?
?就是這個騷騷騷的東西,害死人,必須要。模塊中存在就說明環(huán)境已經(jīng)安裝好了,沒有的話多重啟幾下IIS 或者重新再裝一次
4、修改項目配置
1、修改launchSettings.json
?2、修改startup.cs中的Configure方法
原來是這樣的
?49行修改成紅色框這樣的,實際是增加了一行代碼c.RoutePrefix = "";這個的意思是去掉路由的前綴。只改49行,其他都不要動。
3、修改屬性HouseSysWebApplication.xml
?
?
保存重新生成,啟動項目,界面是這樣的,地址欄中沒有swagger這個地址,這才是正確的,說明在VS上成功了。
?4、創(chuàng)建發(fā)布的目的
首先在D盤創(chuàng)建目錄,D:\website\HouseApp,目錄位置隨你自己定,這里是D:\website\HouseApp
并選擇目錄>右鍵>屬性>安全>編輯,也就是要給這個目錄添加everyone組的權(quán)限
?
?5、發(fā)布項目
項目右鍵-》發(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-->
?增加一個內(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)站默認首頁
?
?
?
9、啟動網(wǎng)站
?
?點擊第一個接口,效果還是很好的
?
這才是我們要的,后端寫的接口不能只在自己的電腦上,而應(yīng)該是在局域網(wǎng)的某臺服務(wù)器上,這樣項目成員才能通過瀏覽器訪問接口,重新?上面步驟,同樣可以部署在公網(wǎng)上,這樣在internet上就可以看到接口文檔了,如
?
?網(wǎng)上看了很多人的文章,沒有一個是管用的,很多是你抄抄我抄抄,一堆復(fù)制,根本沒有在自己的真實環(huán)境中運用實踐,誤人子弟,再來牛逼一把文章來源:http://www.zghlxwxcb.cn/news/detail-687925.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-687925.html
到了這里,關(guān)于在IIS上部署你的ASP.NET Core Web Api項目及Swagger的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!