创建 Web 宿主
本页把后端解决方案推进到“宿主能启动”的状态,重点是先把 Program.cs、服务注册和请求管道的最小骨架搭起来。后面的 WebAPI、认证和数据访问都会继续扩这一个入口。
这篇教程解决什么
- Web 宿主最小入口应该怎么写。
Program.cs里哪些内容属于宿主基础骨架。- 为什么后续能力都要继续往同一个宿主入口里接。
前置条件
- 已完成 创建后端解决方案。
src/BackendStarter.Api已存在。
配套代码
- 当前样例:backend-starter
- 当前关注文件:Program.cs
- 当前关注文件:BackendStarter.Api.csproj
- 当前关注文件:launchSettings.json
我们要做的事
- 建立可启动宿主。
- 预留控制器、Swagger、认证和授权的挂载位置。
- 固定本地开发端口,方便后续前端代理直接复用。
- 保持后续教程都能在同一入口内演进。
操作步骤
- 打开 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();
如果你是从
dotnet new webapi生成的默认模板开始,删掉 WeatherForecast 模板代码,把入口整理成上面的形状。确认项目文件仍然是最小 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>
- 在
src/BackendStarter.Api/Properties/launchSettings.json中固定本地开发地址:
{
"profiles": {
"BackendStarter.Api": {
"applicationUrl": "http://localhost:5000"
}
}
}
- 在项目根目录运行宿主:
dotnet run --project samples/tutorials/backend-starter/src/BackendStarter.Api/BackendStarter.Api.csproj
验证结果
- 控制台能够正常启动 Web 宿主。
- 打开
http://localhost:5000/healthz时,能看到健康检查结果。 - 打开 Swagger UI 时,宿主入口已经可用,即使此时还没有自定义控制器。