.Net8 WebAPI项目创建部署记录
本着学新不学旧的原则,.Net Core会逐步替代.Net Framework,并且是开源框架,能用在什么地方懂的都懂。本文记录了Net8框架下的Web API项目创建到部署过程。
1、创建项目
新建项目选择ASP.NET Core Web API,太多了的话可以在上面筛选
如果没有去VS Installer添加“ASP.NET 和 Web开发”模块并安装。
配置项目
配置HTTPS
:方便测试不勾选。
不使用顶级语句
:勾选后是传统的Program类中定义Main函数入口;不勾选直接就是指令有点抽象不符合C#习惯,够不够选看个人。
使用控制器
:不勾选会在Program中写方法,看着乱,建议勾选。
2、项目结构和解释
项目结构
Main函数配置解释:
namespace WebAPI记录
{publicclassProgram{publicstaticvoidMain(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();//设置文档内容var app = builder.Build();// Configure the HTTP request pipeline.if(app.Environment.IsDevelopment())//只有当程序处于debug的情况才开启swagger{//分别注入中间件和ui中间间
app.UseSwagger();
app.UseSwaggerUI();}
app.UseAuthorization();
app.MapControllers();
app.Run();}}}
Controller解释:
usingMicrosoft.AspNetCore.Mvc;namespace WebAPI记录.Controllers
{[ApiController][Route("[controller]")]publicclassWeatherForecastController:ControllerBase{privatestaticreadonlystring[] Summaries =new[]{"Freezing","Bracing","Chilly","Cool","Mild","Warm","Balmy","Hot","Sweltering","Scorching"};privatereadonlyILogger<WeatherForecastController> _logger;publicWeatherForecastController(ILogger<WeatherForecastController> logger){
_logger = logger;}// http://ip:port/WeatherForecast[HttpGet(Name ="GetWeatherForecast")]// 创建Get请求publicIEnumerable<WeatherForecast>Get(){return Enumerable.Range(1,5).Select(index =>newWeatherForecast{
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、本地运行
可以选择http或者IIS方式运行,端口见上面json内的配置
运行效果
Debug模式下会进入Swagger页面(见上面Main函数注释),以UI形式方便观察测试接口和结果
点击Execute查看请求URL和返回结果
至此本地测试完成
4、生成项目
选择菜单栏中的 生成 -> 发布。
目标可以选文件夹,简单一点
默认路径是生成文件夹下的publish目录
点击发布编译生成项目
生成成功后可以直接到生成目录下:
5、服务器远程部署(Windows)
部署环境:Window Server 2016
(1)安装IIS
这边简单写了,详细自行查询
服务器管理器 -> 添加功能 -> 安装IIS
(2)安装NetCore运行时
进入微软官网下载运行时Download .NET 8.0 (Linux, macOS, and Windows),选择HostBundle包即可。
安装完后,右键找到IIS管理器:
在模块下出现AspNetCoreModuleV2表示安装成功:
(3)配置IIS
添加应用程序池:
输入名称,选择”无托管代码“:
将发布生成的文件夹传到服务器上去
,过程略。
IIS添加网站:
应用程序池
选择刚才创建的
物理路径
选择刚才上传的文件夹
绑定的端口
选择空端口(不用和项目中json配置的一样)
编辑权限中创建一个完全控制权限的账户
点击”启动“运行,发现什么都没有。别忘记我们做的是API不是网站,地址换成接口URL就有了
Postman远程测试也没有问题:
6、新增自定义接口
Controllers文件夹添加控制器
命名方式注意以Controller结尾
创建好后代码自动继承Controller。
[Route(“[controller]”)]
表示URL以类名MyAPI为路由地址,希望其他地址直接改字符串就行。
列举了4个请求的例子:
usingMicrosoft.AspNetCore.Mvc;namespace WebAPI记录.Controllers
{[ApiController][Route("[controller]")]publicclassMyAPIController:Controller{// http://ip:port[HttpGet]publicstringGetString(){return"Hello";}// http://ip:port/myapi/id[HttpGet("id")]publicstringGetStringByID([FromHeader]int id)// FromHeader属性表示从请求头获得参数{return"Hello "+ id.ToString();}// http://ip:port/myapi/result[HttpGet("result")]publicIActionResultGetStringResult(){var data =new{ Message ="Hello"};returnOk(data);// Ok返回包含请求数据的HTTP 200}// http://ip:port/postdata[HttpPost("postdata")]publicIActionResultPostData([FromBody]DataModel data)// FromBody属性表示从请求的Body中读取并转为DataModel类{// 在这里处理接收到的数据returnCreatedAtAction(nameof(PostData),null,new{ Message = data });// CreatedAtAction返回包含创建资源的 URL 的 HTTP 201 响应}}}
DataModel类:
namespace WebAPI记录
{publicclassDataModel{publicstring Name {get;set;}publicint Value {get;set;}}}
运行后已经可以访问结果了
测试结果:
版权归原作者 SmileGift 所有, 如有侵权,请联系我们删除。