商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > .Net8 WebAPI项目创建部署的实现

.Net8 WebAPI项目创建部署的实现

  发布于2026-07-23 阅读(0)

扫一扫,手机访问

学新不学旧,这个道理放在技术选型上同样适用。.Net Core作为开源框架,正在逐步替代传统的.Net Framework,至于能用在什么地方,懂的都懂。下面就来完整走一遍.Net8框架下Web API项目的创建、开发到部署全流程。

1、创建项目

新建项目时,直接选择“ASP.NET Core Web API”模板。如果模板列表太多,可以在上方的筛选框里快速定位。

要是找不到这个模板,说明VS Installer里缺了“ASP.NET和Web开发”模块,得去补装一下。

.Net8 WebAPI项目创建部署的实现

.Net8 WebAPI项目创建部署的实现

配置项目

配置HTTPS:为了方便本地测试,可以不勾选。

不使用顶级语句:勾选后会生成传统的Program类,里面是Main函数入口;不勾选的话,代码直接写在顶层,有点抽象,不太符合C#的习惯。选哪个看个人喜好。

使用控制器:建议勾选。如果不勾选,所有方法都得写在Program里,看着就乱。

.Net8 WebAPI项目创建部署的实现

2、项目结构和解释

项目结构

.Net8 WebAPI项目创建部署的实现

先来看Main函数里的配置,这里藏着不少关键逻辑:

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();   //设置文档内容            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的部分,可以理解为API的“大脑”:

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 _logger;        public WeatherForecastController(ILogger logger)        {            _logger = logger;        }// http://ip:port/WeatherForecast        [HttpGet(Name = "GetWeatherForecast")]// 创建Get请求        public IEnumerable 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();        }    }}

另外,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里的配置。

.Net8 WebAPI项目创建部署的实现

运行效果

Debug模式下会自动打开Swagger页面(这也是Main函数里设置的效果),可以直观地看到所有接口,测试起来很方便。

.Net8 WebAPI项目创建部署的实现

.Net8 WebAPI项目创建部署的实现

轻点Execute,就能看到完整的请求URL和返回结果。

.Net8 WebAPI项目创建部署的实现

本地测试到这里就差不多了。

4、生成项目

菜单栏选择“生成” -> “发布”。目标选“文件夹”就行,简单直接。

.Net8 WebAPI项目创建部署的实现

默认路径是项目文件夹下的publish目录。

.Net8 WebAPI项目创建部署的实现

点击“发布”开始编译。

.Net8 WebAPI项目创建部署的实现

.Net8 WebAPI项目创建部署的实现

生成成功后,可以直接到目录下查看。

.Net8 WebAPI项目创建部署的实现

5、服务器远程部署(Windows)

部署环境:Window Server 2016

(1)安装IIS

这一步比较简单,常规操作:服务器管理器 -> 添加功能 -> 安装IIS。具体细节就不展开了。

(2)安装NetCore运行时

去微软官网下载“.NET 8.0运行时”,选择Host Bundle包就行。

.Net8 WebAPI项目创建部署的实现

安装完成后,右键找到IIS管理器。

.Net8 WebAPI项目创建部署的实现

在“模块”下看到AspNetCoreModuleV2,说明安装成功。

.Net8 WebAPI项目创建部署的实现

.Net8 WebAPI项目创建部署的实现

(3)配置IIS

先添加一个应用程序池。

.Net8 WebAPI项目创建部署的实现

输入名称,然后选择“无托管代码”。

.Net8 WebAPI项目创建部署的实现

把上一步发布生成的文件夹传到服务器上(过程略)。然后在IIS里添加网站:

应用程序池:选择刚才创建的

物理路径:选择刚才上传的文件夹

端口:选择一个空端口(注意,这个端口不用和项目里的LaunchSettings.json配置一致)

.Net8 WebAPI项目创建部署的实现

编辑权限,创建一个完全控制权限的账户。

.Net8 WebAPI项目创建部署的实现

点击“启动”运行,发现页面是空的?别急,做的是API而不是网站,把地址换成具体的接口URL就能看到结果了。

.Net8 WebAPI项目创建部署的实现

.Net8 WebAPI项目创建部署的实现

用Postman远程测试,一切正常。

.Net8 WebAPI项目创建部署的实现

6、新增自定义接口

在Controllers文件夹下添加一个控制器。

.Net8 WebAPI项目创建部署的实现

.Net8 WebAPI项目创建部署的实现

命名时记得以Controller结尾。

.Net8 WebAPI项目创建部署的实现

创建后,代码会自动继承Controller基类。其中[Route("[controller]")]表示URL默认以类名(比如MyAPI)作为路由地址。如果想用其他路径,直接改字符串就行。

下面列举了4种常见的请求方式,完整的增删改查骨架已经有了:

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属性表示从请求头获得参数        {            return "Hello " + id.ToString();        }        // http://ip:port/myapi/result        [HttpGet("result")]        public IActionResult GetStringResult()        {            var data = new { Message = "Hello" };            return Ok(data);    // Ok返回包含请求数据的HTTP 200        }        // http://ip:port/postdata        [HttpPost("postdata")]        public IActionResult PostData([FromBody] DataModel data)    // FromBody属性表示从请求的Body中读取并转为DataModel类        {            // 在这里处理接收到的数据            return CreatedAtAction(nameof(PostData), null, new { Message = data }); // CreatedAtAction返回包含创建资源的 URL 的 HTTP 201 响应        }    }}

对应的DataModel类:

namespace WebAPI记录{    public class DataModel    {        public string Name { get; set; }        public int Value { get; set; }    }}

运行后,这些接口已经可以正常访问了。

.Net8 WebAPI项目创建部署的实现

测试结果如下:

.Net8 WebAPI项目创建部署的实现

.Net8 WebAPI项目创建部署的实现

本文转载于:https://www.jb51.net/aspnet/341065z61.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注