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

.NET Core MVC项目Swagger无法显示API接口问题求助

问题排查与解决方案

核心问题:缺少Swagger文档生成中间件

你的Program.cs里没有调用app.UseSwagger(),这是生成swagger/v1/swagger.json的关键步骤,Swagger UI必须读取这个文件才能展示接口定义,这是导致"no api definition provided"的直接原因。

其他问题:Swagger UI配置重复与中间件顺序错误

你重复调用了UseSwaggerUi3()、无参数UseSwaggerUI()和带配置的UseSwaggerUI(),会造成配置冲突;同时中间件顺序不符合.NET Core规范,正确的执行顺序会影响Swagger的正常工作。

修正后的Program.cs代码

var builder = WebApplication.CreateBuilder(args);

// 添加控制器与MVC服务
builder.Services.AddControllers();
builder.Services.AddControllersWithViews();

// 配置Swagger服务
builder.Services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo { Title = "API Name", Version = "v1" });
});
builder.Services.AddEndpointsApiExplorer();

var app = builder.Build();

app.UseForwardedHeaders();

if (app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    app.UseHsts();
    // 仅开发环境启用Swagger(规范做法,可根据需求调整)
    app.UseSwagger();
    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("/swagger/v1/swagger.json", "API Name V1");
        // 可选:将Swagger UI设置为网站根路径
        // c.RoutePrefix = string.Empty;
    });
}

// 中间件顺序必须遵循:路由 -> 认证 -> 映射控制器
app.UseRouting();
app.UseAuthentication();
app.MapControllers();

app.Run();

额外检查点

  • 确认ApplicationAPIController所在命名空间被项目正确包含,未被排除在程序集扫描范围外
  • 检查IApplicationService和IMapper是否已正确注册到依赖注入容器(依赖注入失败可能导致控制器无法正常初始化,但Swagger通常仍会展示接口定义)
  • 直接访问https://localhost:<端口>/swagger/v1/swagger.json,若能返回JSON文档,说明Swagger生成正常;若返回404,需再次检查Swagger服务配置与中间件顺序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:12:42