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

ASP.NET教程 2025-08-23

目录

  • 1、创建项目
  • 2、项目结构和解释
  • 3、本地运行
  • 4、生成项目
  • 5、服务器远程部署(Windows)
    • (1)安装IIS
    • (2)安装NetCore运行时
    • (3)配置IIS
  • 6、新增自定义接口

    本着学新不学旧的原则,.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记录
    {
        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*/as*pnetcore/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解释:

    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 ILoggerWeatherForecastController _logger;
    
            public WeatherForecastController(ILoggerWeatherForecastController logger)
            {
                _logger = logger;
            }
    
    		// http://ip:port/WeatherForecast
            [HttpGet(Name = "GetWeatherForecast")]	// 创建Get请求
            public IEnumerableWeatherForecast 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.s*ch*ema*store.org/launchsettings.json",
      "iisSettings": {
        "windowsAuthentication": false,
        "anonymousAuthentication": true,
        "iisExpress": {
          "applicationUrl": "http://loc*a*lh*ost:12692",
          "sslPort": 0
        }
      },
      "profiles": {
        "http": {
          "commandName": "Project",
          "dotnetRunMessages": true,
          "launchBrowser": true,
          "launchUrl": "swagger",
          "applicationUrl": "http://lo*cal*h*ost: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形式方便观察测试接口和结果

    Swagger

    Swagger

    点击Execute查看请求URL和返回结果

    本地测试

    至此本地测试完成

    4、生成项目

    选择菜单栏中的 生成 - 发布。

    目标可以选文件夹,简单一点

    发布

    默认路径是生成文件夹下的publish目录

    发布

    点击发布编译生成项目

    发布

    编译

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

    生成

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

    部署环境:Window Server 2016

    (1)安装IIS

    这边简单写了,详细自行查询

    服务器管理器 - 添加功能 - 安装IIS

    (2)安装NetCore运行时

    进入微软官网下载运行时Download .NET 8.0 (Linux, macOS, and Windows),选择HostBundle包即可。

    NETCore

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

    IIS

    在模块下出现AspNetCoreModuleV2表示安装成功:

    在这里插入图片描述

    在这里插入图片描述

    (3)配置IIS

    添加应用程序池:

    应用程序池

    输入名称,选择无托管代码:

    应用程序池

    将发布生成的文件夹传到服务器上去,过程略。

    IIS添加网站:

    应用程序池选择刚才创建的
    物理路径选择刚才上传的文件夹
    绑定的端口选择空端口(不用和项目中json配置的一样)

    添加网站

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

    创建用户权限

    点击启动运行,发现什么都没有。别忘记我们做的是API不是网站,地址换成接口URL就有了

    测试结果

    测试结果

    Postman远程测试也没有问题:

    POSTMAN测试

    6、新增自定义接口

    Controllers文件夹添加控制器

    新增控制器

    新增控制器

    命名方式注意以Controller结尾

    新增控制器

    创建好后代码自动继承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创建使用MySQL数据库的webapi项目