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

已配置API版本控制,Swashbuckle Swagger仍要求输入api-version?

问题原因及解决办法

出现这种情况,核心是Swagger没有根据你选中的版本自动筛选对应端点,所以默认保留了全局的api-version输入参数。按下面几个步骤排查修复:

  • 配置Swagger文档的端点过滤规则
    在AddSwaggerGen里添加DocInclusionPredicate,让每个版本的Swagger文档只包含对应版本的API端点:

    services.AddSwaggerGen(options =>
    {
        // 注册v1、v2版本的文档信息
        options.SwaggerDoc("v1", new OpenApiInfo { Title = "你的API名称", Version = "v1" });
        options.SwaggerDoc("v2", new OpenApiInfo { Title = "你的API名称", Version = "v2" });
    
        // 只保留当前文档版本对应的端点
        options.DocInclusionPredicate((docName, apiDesc) =>
        {
            if (!apiDesc.TryGetMethodInfo(out MethodInfo methodInfo)) return false;
            
            // 获取控制器和方法上标记的所有API版本
            var declaredVersions = methodInfo.DeclaringType.GetCustomAttributes(true)
                .OfType<ApiVersionAttribute>()
                .SelectMany(attr => attr.Versions);
            var methodVersions = methodInfo.GetCustomAttributes(true)
                .OfType<ApiVersionAttribute>()
                .SelectMany(attr => attr.Versions);
            var allVersions = declaredVersions.Concat(methodVersions);
    
            // 判断当前文档版本是否匹配端点的版本
            return allVersions.Any(v => $"v{v.ToString()}" == docName);
        });
    });
    
  • 确认Swagger UI的版本端点配置正确
    在UseSwaggerUI里确保每个版本的文档路径都正确注册:

    app.UseSwaggerUI(options =>
    {
        options.SwaggerEndpoint("/swagger/v1/swagger.json", "你的API v1");
        options.SwaggerEndpoint("/swagger/v2/swagger.json", "你的API v2");
    });
    
  • 检查API版本控制的基础配置
    确保AddApiVersioning里开启了版本报告,让Swagger能正确识别端点版本:

    services.AddApiVersioning(options =>
    {
        options.ReportApiVersions = true;
        options.AssumeDefaultVersionWhenUnspecified = true;
        options.DefaultApiVersion = new ApiVersion(1, 0);
    });
    

完成以上配置后,切换Swagger UI上的版本标签,对应的端点会自动过滤,api-version输入字段也会消失——因为当前文档里的所有端点都属于选中的版本,无需额外指定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:41:08