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
}

Что выводит Swagger: Что выводит Swagger


Ответы (1 шт):

Автор решения: Johnny_Killjoy

Добавь это в DI и все будет норм:

services.AddSwaggerGen(config => config.CustomSchemaIds(x => x.FullName))
→ Ссылка