Swagger 授权 Header 在 ASP.NET 核心项目中不可见

Swagger Authorization Header not visible in ASP.NET Core project

我已经为我的 asp.net 核心项目包含了 swagger 包(Swashbuckle.AspNetCore)。 swagger 包是最新的 4.0.1 版本。我尝试使用以下代码启用 swagger ui 中的授权按钮:

// Register the Swagger generator
services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new Info { Title = "Sample API", Description = "Swagger Sample API", Version = "v1" });
    c.AddSecurityDefinition("Bearer", new ApiKeyScheme { In = "header", Description = "Please Enter Authentication Token", Name = "Authorization", Type = "SampleApiKey" });
    c.AddSecurityRequirement(new Dictionary<string, IEnumerable<string>> {
        { "Bearer", Enumerable.Empty<string>() },
    });
});

按钮可以在 swagger 中看到 ui 但是当我点击按钮时,它显示如下错误:

谁能指出我这里的问题是什么?

你的行应该是:

c.AddSecurityDefinition("Bearer", new ApiKeyScheme { 
        In = "header",
        Description = "Please Enter Authentication Token",
        Name = "Authorization", Type = "apiKey"
});

因为 Type 正在 Swashbuckle 内部转换为策略模式。 可能的值为:

  • 基本
  • api密钥
  • oauth2

可能您可以在 Swashbuckle repo 中提交错误,因为除非它可以被覆盖,否则它可能是一个枚举,以免引起混淆。