.Net8?WebAPI項(xiàng)目創(chuàng)建部署的實(shí)現(xiàn)
本著學(xué)新不學(xué)舊的原則,.Net Core會(huì)逐步替代.Net Framework,并且是開源框架,能用在什么地方懂的都懂。本文記錄了Net8框架下的Web API項(xiàng)目創(chuàng)建到部署過程。
1、創(chuàng)建項(xiàng)目
新建項(xiàng)目選擇ASP.NET Core Web API,太多了的話可以在上面篩選
如果沒有去VS Installer添加“ASP.NET 和 Web開發(fā)”模塊并安裝。


配置項(xiàng)目
配置HTTPS:方便測(cè)試不勾選。
不使用頂級(jí)語(yǔ)句:勾選后是傳統(tǒng)的Program類中定義Main函數(shù)入口;不勾選直接就是指令有點(diǎn)抽象不符合C#習(xí)慣,夠不夠選看個(gè)人。
使用控制器:不勾選會(huì)在Program中寫方法,看著亂,建議勾選。

2、項(xiàng)目結(jié)構(gòu)和解釋
項(xiàng)目結(jié)構(gòu)

Main函數(shù)配置解釋:
namespace WebAPI記錄
{
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
//注入swagger
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer(); //生成文檔
builder.Services.AddSwaggerGen(); //設(shè)置文檔內(nèi)容
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment()) //只有當(dāng)程序處于debug的情況才開啟swagger
{
//分別注入中間件和ui中間間
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseAuthorization();
app.MapControllers();
app.Run();
}
}
}
Controller解釋:
using Microsoft.AspNetCore.Mvc;
namespace WebAPI記錄.Controllers
{
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
// http://ip:port/WeatherForecast
[HttpGet(Name = "GetWeatherForecast")] // 創(chuàng)建Get請(qǐng)求
public IEnumerable<WeatherForecast> Get()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
}
.ToArray();
}
}
}
LaunchSettings.json配置文件:
記錄了端口配置信息等。
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:12692",
"sslPort": 0
}
},
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "http://localhost:5053",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
3、本地運(yùn)行
可以選擇http或者IIS方式運(yùn)行,端口見上面json內(nèi)的配置

運(yùn)行效果
Debug模式下會(huì)進(jìn)入Swagger頁(yè)面(見上面Main函數(shù)注釋),以UI形式方便觀察測(cè)試接口和結(jié)果


點(diǎn)擊Execute查看請(qǐng)求URL和返回結(jié)果

至此本地測(cè)試完成
4、生成項(xiàng)目
選擇菜單欄中的 生成 -> 發(fā)布。
目標(biāo)可以選文件夾,簡(jiǎn)單一點(diǎn)

默認(rèn)路徑是生成文件夾下的publish目錄

點(diǎn)擊發(fā)布編譯生成項(xiàng)目


生成成功后可以直接到生成目錄下:

5、服務(wù)器遠(yuǎn)程部署(Windows)
部署環(huán)境:Window Server 2016
(1)安裝IIS
這邊簡(jiǎn)單寫了,詳細(xì)自行查詢
服務(wù)器管理器 -> 添加功能 -> 安裝IIS
(2)安裝NetCore運(yùn)行時(shí)
進(jìn)入微軟官網(wǎng)下載運(yùn)行時(shí)Download .NET 8.0 (Linux, macOS, and Windows),選擇HostBundle包即可。

安裝完后,右鍵找到IIS管理器:

在模塊下出現(xiàn)AspNetCoreModuleV2表示安裝成功:


(3)配置IIS
添加應(yīng)用程序池:

輸入名稱,選擇”無(wú)托管代碼“:

將發(fā)布生成的文件夾傳到服務(wù)器上去,過程略。
IIS添加網(wǎng)站:
應(yīng)用程序池選擇剛才創(chuàng)建的
物理路徑選擇剛才上傳的文件夾
綁定的端口選擇空端口(不用和項(xiàng)目中json配置的一樣)

編輯權(quán)限中創(chuàng)建一個(gè)完全控制權(quán)限的賬戶

點(diǎn)擊”啟動(dòng)“運(yùn)行,發(fā)現(xiàn)什么都沒有。別忘記我們做的是API不是網(wǎng)站,地址換成接口URL就有了


Postman遠(yuǎn)程測(cè)試也沒有問題:

6、新增自定義接口
Controllers文件夾添加控制器


命名方式注意以Controller結(jié)尾

創(chuàng)建好后代碼自動(dòng)繼承Controller。
[Route(“[controller]”)]表示URL以類名MyAPI為路由地址,希望其他地址直接改字符串就行。
列舉了4個(gè)請(qǐng)求的例子:
using Microsoft.AspNetCore.Mvc;
namespace WebAPI記錄.Controllers
{
[ApiController]
[Route("[controller]")]
public class MyAPIController : Controller
{
// http://ip:port
[HttpGet]
public string GetString()
{
return "Hello";
}
// http://ip:port/myapi/id
[HttpGet("id")]
public string GetStringByID([FromHeader]int id) // FromHeader屬性表示從請(qǐng)求頭獲得參數(shù)
{
return "Hello " + id.ToString();
}
// http://ip:port/myapi/result
[HttpGet("result")]
public IActionResult GetStringResult()
{
var data = new { Message = "Hello" };
return Ok(data); // Ok返回包含請(qǐng)求數(shù)據(jù)的HTTP 200
}
// http://ip:port/postdata
[HttpPost("postdata")]
public IActionResult PostData([FromBody] DataModel data) // FromBody屬性表示從請(qǐng)求的Body中讀取并轉(zhuǎn)為DataModel類
{
// 在這里處理接收到的數(shù)據(jù)
return CreatedAtAction(nameof(PostData), null, new { Message = data }); // CreatedAtAction返回包含創(chuàng)建資源的 URL 的 HTTP 201 響應(yīng)
}
}
}
DataModel類:
namespace WebAPI記錄
{
public class DataModel
{
public string Name { get; set; }
public int Value { get; set; }
}
}
運(yùn)行后已經(jīng)可以訪問結(jié)果了

測(cè)試結(jié)果:



到此這篇關(guān)于.Net8 WebAPI項(xiàng)目創(chuàng)建部署的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān).Net8 WebAPI創(chuàng)建部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ASP.NET中將聲音文件添加到資源中并進(jìn)行播放的方法
這篇文章主要介紹了ASP.NET中將聲音文件添加到資源中并進(jìn)行播放的方法,實(shí)例分析了聲音文件的添加及播放實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
gridview+objectdatasource+aspnetpager整合實(shí)例
gridview+objectdatasource+aspnetpager整合實(shí)例,需要的朋友可以參考一下2013-04-04
如何給asp.net core寫個(gè)中間件記錄接口耗時(shí)
這篇文章主要給大家介紹了關(guān)于如何給asp.net core寫個(gè)中間件記錄接口耗時(shí)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用asp.net core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
JQuery運(yùn)用ajax注冊(cè)用戶實(shí)例(后臺(tái)asp.net)
JQuery運(yùn)用ajax注冊(cè)用戶實(shí)例,其實(shí)那中后臺(tái)語(yǔ)言都是差不多的形式。2009-12-12
asp.net aspnetpager分頁(yè)統(tǒng)計(jì)時(shí)與實(shí)際不符的解決辦法
最近分頁(yè)方面根據(jù)實(shí)際需要修改了一些函數(shù)2008-11-11
Entity Framework Core實(shí)現(xiàn)軟刪除與查詢過濾器
這篇文章介紹了Entity Framework Core實(shí)現(xiàn)軟刪除與查詢過濾器的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02

