У меня есть asp.net WebAPI (не основной), где я только что добавил Swagger через Swashbuckle.Я использую авторизацию JWT, поэтому добавил добавленную авторизацию, как описано здесь .
т.е.
public class AddAuthorizationHeaderParameterOperationFilter : IOperationFilter
{
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (operation.parameters != null)
{
operation.parameters.Add(new Parameter
{
name = "Authorization",
@in = "header",
description = "access token",
required = false,
type = "string"
});
}
}
}
configuration
.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "Commerce Services - Discounts");
foreach (var commentFile in xmlCommentFiles)
{
c.IncludeXmlComments(commentFile);
}
c.OperationFilter<ExamplesOperationFilter>();
c.OperationFilter<AddAuthorizationHeaderParameterOperationFilter>();
})
.EnableSwaggerUi(config => config.DocExpansion(DocExpansion.List));
Это отлично работает для моих маршрутов, где у меня есть другие параметры, например, вдокумент чванства, для маршрута, который имеет параметр, я вижу следующее ...
"parameters": [
{
"name": "myTransactionStartModel",
"in": "body",
"description": "My transaction start model.",
"required": true,
"schema": {
"$ref": "#/definitions/MyTransactionStartModel"
}
},
{
"name": "Authorization",
"in": "header",
"description": "Replace {token} with generated token",
"required": false,
"type": "string",
"default": "bearer {token}"
}
],
И в пользовательском интерфейсе я вижу поле авторизации ...
Однако, любой маршрут, который не имеет каких-либо параметров, также не получает поля авторизации.Раздел "parameters":
отсутствует в документе, и, следовательно, нет авторизации.И поэтому у меня нет авторизации в пользовательском интерфейсе, поэтому я не могу запустить маршрут через опробовать его!кнопка (поскольку я не могу добавить JWT, чтобы он мог работать)
У кого-нибудь есть какие-либо идеи по поводу этого?
Заранее благодарен за любую помощь