You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地无法加载新ASP.NET Core Web API的Swagger页面问题排查

问题排查与修正方案

你的问题源于三个关键配置/代码错误,逐一修正后即可解决Swagger和API接口的404问题:

1. 控制器路由属性语法错误

你的PresentController中Route属性多了一个闭合方括号,导致控制器无法被ASP.NET Core框架正确识别注册:

修正后的控制器代码

[ApiController]
[Route("api/[controller]")] // 移除了多余的末尾]
public class PresentController(IPresentsService _presentsService) : ControllerBase
{
    [HttpGet]
    [Produces(MediaTypeNames.Application.Json)]
    [ProducesResponseType(typeof(IEnumerable<PresentDto>), StatusCodes.Status200OK)]
    public async Task<IEnumerable<PresentDto>> GetAllPresentsAsync()
    {
        return await _presentsService.GetAllPresentsAsync();
    }
}

2. Program.cs缺少核心中间件与服务配置

你的Program.cs遗漏了三个关键步骤,导致Swagger无法生成文档、API接口无法被路由:

修正后的Program.cs代码

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();

// 新增:添加Swagger文档生成服务
builder.Services.AddSwaggerGen();

// Add services to the container.
builder.Services.AddScoped<IPresentsRepository, PresentsRepository>();
builder.Services.AddScoped<IPresentsService, PresentsService>();

builder.Services.AddDbContext<PresentsDbContext>(options =>
{
    options.UseNpgsql(builder.Configuration.GetConnectionString("PresentsDb"));
});

builder.Services.AddEndpointsApiExplorer();

builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());

var app = builder.Build();

// Configure the HTTP request pipeline.
app.UseHttpsRedirection();

// 新增:启用Swagger JSON文档端点
app.UseSwagger();

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
    c.RoutePrefix = "";
});

// 新增:将控制器路由映射到请求管道
app.MapControllers();

app.Run();

修正点说明

  • 控制器Route属性修正:修复语法错误后,框架才能正确识别控制器并绑定路由规则api/present。
  • AddSwaggerGen():添加Swagger文档生成的核心服务,配合AddEndpointsApiExplorer生成API元数据。
  • app.UseSwagger():启用Swagger JSON文档的访问端点,让Swagger UI能获取到API定义文件。
  • app.MapControllers():将控制器的路由规则注册到请求处理管道,确保/api/present这类请求能被正确处理。

内容的提问来源于stack exchange,提问作者Dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 06:55:08