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

升级Swashbuckle.AspNetCore至6.3.1后必填Header无UI层级报错

问题现象

Swashbuckle.AspNetCore 6.2.3版本下相关功能运行正常,升级至6.3.1版本后,Swagger UI不再对配置为必填的Header参数抛出UI层级的必填校验错误提示。
此前存在同类问题记录:Swagger UI(Core环境下基于SwashBuckle实现)不会对必填Header参数抛出UI层级的错误提示。

原有问题代码

添加必填Header参数的实现代码如下:

operation.Parameters.Add(new OpenApiParameter()
{
    Name = headerName,
    In = ParameterLocation.Header,
    Description = attribute.Description,
    Required = true,
    Schema = new OpenApiSchema
    {
        Type = "String",
        Default = new OpenApiString(attribute.DefaultValue)
    }
});
问题根因

这是6.3.x版本的逻辑变更导致的:只要给标记为必填的参数在Schema中配置了Default默认值,Swagger UI就会判定该参数存在预填充内容,无需用户手动输入,因此不会触发空值的必填校验提示。6.2.3版本没有加入这个判定逻辑,所以升级前校验提示可以正常弹出。

修复方案
  • 移除必填Header参数Schema下的Default属性配置,如果需要告知用户参数默认值,直接把默认值说明写到Description字段即可,调整后UI层级的必填校验会恢复正常。
  • 修复后的参考代码:
operation.Parameters.Add(new OpenApiParameter()
{
    Name = headerName,
    In = ParameterLocation.Header,
    Description = $"{attribute.Description},默认值:{attribute.DefaultValue}",
    Required = true,
    Schema = new OpenApiSchema
    {
        Type = "String"
    }
});

内容的提问来源于stack exchange,提问作者Muhammad Azhar Shahzad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 02:33:27