You need to enable JavaScript to run this app. Swashbuckle.Net45在.NET 4.6项目中Swagger UI不显示控制器怎么办
优惠活动
大模型
产品
解决方案
定价
更多

Swashbuckle.Net45在.NET 4.6项目中Swagger UI不显示控制器怎么办

常见遗漏配置及排查方案

1. 注册顺序校验

  • 必须保证WebApiConfig.Register执行在Swagger配置注册之前,.NET Framework 中注册顺序错误会导致Swagger无法扫描到已注册的接口路由。
  • 检查是否存在自定义路由规则拦截了api前缀的接口路径,保证默认路由模板api/{controller}/{action}/{id}正常生效。

2. 控制器规范校验

  • 控制器必须为public访问修饰符,且继承自ApiController。
  • 所有接口方法必须明确标记[HttpGet]/[HttpPost]等请求类型特性,Swashbuckle默认不会扫描未声明请求类型的方法。

3. XML注释文件配置校验

  • 右键项目→属性→生成页,勾选「XML文档文件」,路径填写bin\[你的项目名称].xml,需要和SwaggerConfig.cs中IncludeXmlComments配置的路径完全一致。
  • 若控制器写在Area区域下的,需要在Swagger配置中添加冲突处理规则:
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
    c.SingleApiVersion("v1", "项目名称");
    // 解决同路由冲突
    c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
    // 确保XML路径匹配
    c.IncludeXmlComments(string.Format(@"{0}\bin\项目名称.xml", System.AppDomain.CurrentDomain.BaseDirectory));
})
.EnableSwaggerUi(c =>{});

4. 多程序集扫描校验

如果控制器定义在独立的类库项目中,需要在Swagger配置中额外添加类库的XML注释文件引用:

c.IncludeXmlComments(string.Format(@"{0}\bin\控制器所在类库名称.xml", System.AppDomain.CurrentDomain.BaseDirectory));

5. 拦截规则校验

全局权限拦截器、Authorize全局特性、身份验证模块会拦截Swagger的接口文档请求,可在web.config中添加配置放行规则:

<location path="swagger">
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
</location>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 16:27:02