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

ASP.NET Core中Swagger未显示控制器端点仅展示Minimal API问题

控制器端点未在Swagger UI中显示的原因及解决方法

核心原因

你的BoardGamesController缺少路由属性配置,导致ASP.NET Core无法生成该控制器端点的路由元数据,而Swagger依赖这些元数据来识别并展示API接口。

具体解决方法

给控制器添加路由属性,或者给Action的[HttpGet]指定具体路由模板,两种方式任选其一:

方式1:控制器级别添加路由属性(推荐)

在控制器类上添加[Route("api/[controller]")],这样控制器下的所有Action会继承该基础路由,符合RESTful规范:

using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using MyBGList.DTO;

namespace MyBGList.Controllers
{
    [Route("api/[controller]")] // 添加控制器级路由
    [EnableCors("AnyOrigin")]
    public class BoardGamesController : ControllerBase
    {
        private readonly ILogger<BoardGamesController> _logger;
        public BoardGamesController(ILogger<BoardGamesController> logger)
        {
            _logger = logger;
        }
        
        [HttpGet(Name = "GetBoardGames")]
        [ResponseCache(Location = ResponseCacheLocation.Any, Duration = 60)]
        public RestDTO<List<BoardGame>> Get()
        {
            // 原有业务逻辑不变
        }
    }
}

方式2:Action级别指定路由

如果不想给控制器加全局路由,也可以直接在[HttpGet]中指定完整路由路径:

[HttpGet("api/BoardGames", Name = "GetBoardGames")]

额外检查项

  1. 确认Program.cs中已正确配置控制器相关服务:
    • builder.Services.AddControllers()(你的代码已包含)
    • app.MapControllers()(你的代码已包含)
  2. 清理项目并重新生成,避免编译缓存影响识别
  3. 检查是否有全局筛选器或Swagger自定义配置(比如SwaggerGenOptions的筛选规则)意外排除了该控制器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 12:35:22