ASP.NET C#: Swagger не может обработать два метода контроллера с одинаковым путем
Есть два метода контроллера с одинаковым путем. При этом у этих методов есть атрибут реализующий интерфейс IActionConstraint
, который в зависимости от значения query параметра перенаправляет запрос на один их них. Однако Swagger не может обработать такую маршрутизацию и выдает ошибку. Как можно принудить его учитывать этот пользовательский атрибут?
Методы контроллера:
[HttpGet("my-route")]
[Terminal("Terminal 1")]
public IActionResult UseTerminal1()
{
// Логика 1
return Ok();
}
[HttpGet("my-route")]
[Terminal("Terminal 2")]
public IActionResult UseTerminal2()
{
// Логика 2
return Ok();
}
Мой атрибут, управляющей маршрутизацией:
[AttributeUsage(AttributeTargets.Method)]
public sealed class TerminalAttribute(params string[] terminalNames) : Attribute, IActionConstraint
{
#region Реализация IActionConstraint.
/// <inheritdoc />
public int Order { get; }
/// <inheritdoc />
public bool Accept(ActionConstraintContext context)
{
bool accept = false;
string currentTerminalName = context.RouteContext.HttpContext.Request.Query["terminal"].ToString();
foreach (string terminalName in terminalNames)
accept |= terminalName == currentTerminalName;
return accept;
}
#endregion
}
Ответы (1 шт):
Автор решения: Johnny_Killjoy
→ Ссылка
Добавь это в DI
и все будет норм:
services.AddSwaggerGen(config => config.CustomSchemaIds(x => x.FullName))