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

ASP.NET Core Swagger访问swagger.json报404且无错误提示

Swagger 404 问题排查与解决

问题描述

Swagger页面提示“响应状态码404 https://localhost:7247/swagger/v1/swagger.json”,手动访问该地址也返回404,ASP.NET Core应用运行时无任何错误提示。当前使用.NET 7.0版本,大部分NuGet包版本为7.0.12;已通过编译设置禁用部分控制器排除路由配置问题,怀疑是服务/应用注册顺序错误或Swagger配置静默失败。

核心问题定位

查看你的EnsureSwagger方法,发现SwaggerDoc的ID设置为"Notes",但Swagger UI默认会请求/swagger/v1/swagger.json(对应ID为v1的文档),两者ID不匹配导致无法找到对应的swagger.json文件。

解决方案

方案1:统一Swagger文档ID为v1

修改EnsureSwagger中的SwaggerDoc配置,将ID改为"v1",与默认请求路径匹配:

options.SwaggerDoc("v1", new()
{
    Description = "Open API Docs for Notes v1",
    Title = "Notes",
    Version = "v1",
    Contact = new()
    {
        Email = "steffen@technically.fun",
        Name = "Steffen Blake",
        Url = new Uri("https://technically.fun"),
    }
});

方案2:在SwaggerUI中指定文档路径

如果希望保留Notes作为文档ID,需要在UseSwaggerUI中显式指定对应的swagger.json路径:

app.UseSwaggerUI(options =>
{
    options.SwaggerEndpoint("/swagger/Notes/swagger.json", "Notes v1");
});

额外验证点

  • 确认AddControllers()在AddEndpointsApiExplorer()之前注册(你的代码中顺序正确,无需调整)
  • 确保中间件顺序合规:UseSwagger()/UseSwaggerUI()需在UseAuthentication()/UseAuthorization()之前(你的代码顺序正确)

内容的提问来源于stack exchange,提问作者Steffen Cole Blake

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 06:15:04