IIS上部署你的ASP.NET?Core?Web?Api項目及Swagger(圖文)
1、概述
與ASP.NET時代不同,ASP.NET Core不再是由IIS工作進程(w3wp.exe)托管,而是使用自托管Web服務器(Kestrel)運行,IIS則是作為反向代理的角色轉(zhuǎn)發(fā)請求到Kestrel不同端口的ASP.NET Core程序中,隨后就將接收到的請求推送至中間件管道中去,處理完你的請求和相關(guān)業(yè)務邏輯之后再將HTTP響應數(shù)據(jù)重新回寫到IIS中,最終轉(zhuǎn)達到不同的客戶端(瀏覽器,APP,客戶端等)。而配置文件和過程都會由些許調(diào)整,中間最重要的角色便是AspNetCoreModule,它是其中一個的IIS模塊,請求進入到IIS之后便立即由它轉(zhuǎn)發(fā),并迅速重定向到ASP.NET Core項目中,所以這時候我們無需設置應用程序池來托管我們的代碼,它只負責轉(zhuǎn)發(fā)請求而已。
這里我要做的是將一個asp.net core web api項目部署到iis上,同時包括將swagger也部署到iis,具體是在這篇文章基礎上,不明白的先看這個文章。
Asp.net core Web Api 配置swagger中文_hqwest的博客
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那就要對應的,總之是與你的項目框架是什么版本有關(guān),要對應起來。
然后點擊運行安裝,然后在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)站
點擊第一個接口,效果還是很好的
這才是我們要的,后端寫的接口不能只在自己的電腦上,而應該是在局域網(wǎng)的某臺服務器上,這樣項目成員才能通過瀏覽器訪問接口,重新 上面步驟,同樣可以部署在公網(wǎng)上,這樣在internet上就可以看到接口文檔了,如
到此這篇關(guān)于IIS上部署你的ASP.NET Core Web Api項目及Swagger(圖文)的文章就介紹到這了,更多相關(guān)IIS部署ASP.NET Core Web Api項目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ASP.NET設計網(wǎng)絡硬盤之文件夾實現(xiàn)
ASP.NET設計網(wǎng)絡硬盤之文件夾實現(xiàn)...2006-09-09Elasticsearch.Net使用教程 MVC4圖書管理系統(tǒng)(2)
這篇文章主要介紹了Elasticsearch.Net使用教程教會大家利用MVC4制作圖書管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11解析如何利用一個ASP.NET Core應用來發(fā)布靜態(tài)文件
本文主要通過一些簡單的實例來體驗一下如何在一個ASP.NET Core應用中發(fā)布靜態(tài)文件。針對不同格式的靜態(tài)文件請求的處理,ASP.NET Core為我們提供了三個中間件,它們將是本系列文章論述的重點。有需要的朋友可以看下2016-12-12asp.net通過消息隊列處理高并發(fā)請求(以搶小米手機為例)
這篇文章主要介紹了asp.net通過消息隊列處理高并發(fā)請求(以搶小米手機為例),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03ASP.NET使用SignalR2實現(xiàn)服務器廣播
這篇文章介紹了ASP.NET使用SignalR2實現(xiàn)服務器廣播的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05CheckBox控件默認選中,提交時永遠獲得選中狀態(tài)的實現(xiàn)代碼
下面小編就為大家?guī)硪黄狢heckBox控件默認選中,提交時永遠獲得選中狀態(tài)的實現(xiàn)代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-05