Мне нужно добавить пользовательские заголовки, но я не могу понять это. Я пытаюсь использовать новые services.AddOpenApiDocument () вместо services.AddSwaggerDocument (). Я хочу добавить эти пользовательские заголовки ко всему API, а не к одному методу или контроллеру. Я попытался добавить операционный процессор, но при загрузке пользовательского интерфейса Swagger появляется следующая ошибка: «Не удалось отобразить этот компонент, см. Консоль».
Вот мой фрагмент внутри моего ConfigureServices()
:
services.AddOpenApiDocument(document =>
{
...
// this works fine
document.OperationProcessors.Add(new OperationSecurityScopeProcessor("Bearer"));
document.DocumentProcessors.Add(new SecurityDefinitionAppender("Bearer", new SwaggerSecurityScheme
{
Type = SwaggerSecuritySchemeType.ApiKey,
Name = "Authorization",
In = SwaggerSecurityApiKeyLocation.Header
})
);
// this is the header i want to show up for all endpoints that is breaking
document.OperationProcessors.Add(new SampleHeaderOperationProcessor());
});
Вот мой рабочий процессор:
public class SampleHeaderOperationProcessor : IOperationProcessor
{
public Task<bool> ProcessAsync(OperationProcessorContext context)
{
context.OperationDescription.Operation.Parameters.Add(
new SwaggerParameter {
Name = "Sample",
Kind = SwaggerParameterKind.Header,
Type = NJsonSchema.JsonObjectType.String,
IsRequired = false,
Description = "This is a test header",
Default = "{{\"field1\": \"value1\", \"field2\": \"value2\"}}"
});
return Task.FromResult(true);
}
}
Единственное, что у меня есть к этому в моей Configure ():
app.UseSwagger();
app.UseSwaggerUi3();
Вот моя ошибка и журнал консоли:
Моя ошибка и журнал консоли
Если это поможет, я использую ASP .NET CORE 2.2
и NSwag.AspNetCore v12.1.0