agilelabs-fx-docs main tutorials/backend-init/create-web-host.md

创建 Web 宿主

本页把后端解决方案推进到“宿主能启动”的状态,重点是先把 Program.cs、服务注册和请求管道的最小骨架搭起来。后面的 WebAPI、认证和数据访问都会继续扩这一个入口。

这篇教程解决什么

  • Web 宿主最小入口应该怎么写。
  • Program.cs 里哪些内容属于宿主基础骨架。
  • 为什么后续能力都要继续往同一个宿主入口里接。

前置条件

配套代码

我们要做的事

  • 建立可启动宿主。
  • 预留控制器、Swagger、认证和授权的挂载位置。
  • 固定本地开发端口,方便后续前端代理直接复用。
  • 保持后续教程都能在同一入口内演进。

操作步骤

  1. 打开 Program.cs,先关注宿主骨架部分。
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

app.UseSwagger();
app.UseSwaggerUI();

app.MapGet("/healthz", () => Results.Ok(new { status = "ok", sample = "backend-starter" }));
app.MapControllers();

app.Run();
  1. 如果你是从 dotnet new webapi 生成的默认模板开始,删掉 WeatherForecast 模板代码,把入口整理成上面的形状。

  2. 确认项目文件仍然是最小 Web 项目配置:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net10.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Swashbuckle.AspNetCore" Version="10.1.7" />
  </ItemGroup>
</Project>
  1. src/BackendStarter.Api/Properties/launchSettings.json 中固定本地开发地址:
{
  "profiles": {
    "BackendStarter.Api": {
      "applicationUrl": "http://localhost:5000"
    }
  }
}
  1. 在项目根目录运行宿主:
dotnet run --project samples/tutorials/backend-starter/src/BackendStarter.Api/BackendStarter.Api.csproj

验证结果

  • 控制台能够正常启动 Web 宿主。
  • 打开 http://localhost:5000/healthz 时,能看到健康检查结果。
  • 打开 Swagger UI 时,宿主入口已经可用,即使此时还没有自定义控制器。

下一篇读什么