排除某些特定控制器使用 Swashbuckle (OpenApiParameter) 添加的默认 header 参数

Exclude default header parameters added with Swashbuckle (OpenApiParameter) for some specific controllers

是否有任何方法可以排除某些控制器使用默认的强制性 header 添加为 'OpenApiParameter'?我已通过以下方式将所需的 header 参数添加到所有 end-points:

public class RequiredHeadersFilter : IOperationFilter
{
    public void Apply(OpenApiOperation operation, OperationFilterContext context)
    {
        if (operation.Parameters == null)
            operation.Parameters = new List<OpenApiParameter>();

        operation.Parameters.Add(
            new OpenApiParameter
            {
                Name = "my-default-header",
                In = ParameterLocation.Header,
                Required = true,
                Schema = new OpenApiSchema
                {
                    Type = "string"
                } 
            });
    }
}
            
            

但我需要以某种方式排除我的“NoHeaderNeedController”。 是否可以在 OpenApiParameters 或注册时进行管理?

我解决了这个问题。意识到 IOperationFilter 实际上是每个方法的 运行,因此只是从 OperationFilterContext 中取出控制器名称并对其进行检查:

    var controllerName = (context.ApiDescription.ActionDescriptor as ControllerActionDescriptor)?.ControllerName;

        if (!string.IsNullOrWhiteSpace(controllerName) && !controllerName.StartsWith("NoHeaderNeed"))
        {
            operation.Parameters.Add(
                new OpenApiParameter
                {
                    Name = "my-default-header",
                    In = ParameterLocation.Header,
                    Required = true,
                    Schema = new OpenApiSchema
                    {
                        Type = "string"
                    }
                });
        }