public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddOpenApi(options =>
{
options.OpenApiVersion = Microsoft.OpenApi.OpenApiSpecVersion.OpenApi3_0;
});
builder.Services.AddSwaggerGen(options =>
{
options.AddSecurityDefinition("bearerAuth", new()
{
Type = SecuritySchemeType.Http,
In = ParameterLocation.Header,
Scheme = "Bearer",
BearerFormat = "JWT",
Name = "Authorization",
Description = "Enter your bearer token"
});
options.AddSecurityRequirement(new()
{
{
new()
{
Reference = new()
{
Type = ReferenceType.SecurityScheme,
Id = "bearerAuth"
}
},
Array.Empty()
}
});
});
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.MapOpenApi();
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint("/openapi/v1.json", "v1");
});
app.MapGet("/", async context =>
{
await Task.Run(() => context.Response.Redirect("./swagger/index.html", permanent: false));
});
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
}
}
Тот же вызов AddSwaggerGen, который использовался для работы с .NET 8, где у нас был AddEndpointsApiExplorer вместо AddOpenApi и UseSwagger вместо MapOpenApi. В пользовательском интерфейсе Swagger будет доступна большая красивая кнопка «Авторизовать». Но сейчас это не так. Как я могу это исправить?
Вот мой репозиторий: https://github.com/FlameWolf/DotNet9WebApi My Program.cs: [code]public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); builder.Services.AddOpenApi(options => { options.OpenApiVersion = Microsoft.OpenApi.OpenApiSpecVersion.OpenApi3_0; }); builder.Services.AddSwaggerGen(options => { options.AddSecurityDefinition("bearerAuth", new() { Type = SecuritySchemeType.Http, In = ParameterLocation.Header, Scheme = "Bearer", BearerFormat = "JWT", Name = "Authorization", Description = "Enter your bearer token" }); options.AddSecurityRequirement(new() { { new() { Reference = new() { Type = ReferenceType.SecurityScheme, Id = "bearerAuth" } }, Array.Empty() } }); }); var app = builder.Build(); if (app.Environment.IsDevelopment()) { app.MapOpenApi(); app.UseSwaggerUI(options => { options.SwaggerEndpoint("/openapi/v1.json", "v1"); }); app.MapGet("/", async context => { await Task.Run(() => context.Response.Redirect("./swagger/index.html", permanent: false)); }); } app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run(); } } [/code] Тот же вызов AddSwaggerGen, который использовался для работы с .NET 8, где у нас был AddEndpointsApiExplorer вместо AddOpenApi и UseSwagger вместо MapOpenApi. В пользовательском интерфейсе Swagger будет доступна большая красивая кнопка «Авторизовать». Но сейчас это не так. Как я могу это исправить?