AmbiguousMatchException: The request matched multiple endpoints хотя нет одинаковых роутов

Program.cs:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();

var app = builder.Build();

app.UseHttpsRedirection();
app.MapControllers();
app.Run();

В контроллере:

[ApiController]
[Route("[controller]")]
public class CurrencyController : ControllerBase
{
    [HttpGet]
    [ActionName("currency")]
    public async Task<Valute> GetCurrency(string id)
    {
        var item = (await GetItems()).FirstOrDefault(x => x.Id == id);
        return item;
    }

    [HttpGet]
    [ActionName("currencies")]
    public async Task<IEnumerable<Valute>> GetCurrenciesPaged(CurrencyPageParameters @params)
    {
        var data = (await GetItems()).Skip((@params.PageNumber - 1) * @params.PageSize).Take(@params.PageSize);
        return data;
    }

 
    private async Task<IEnumerable<Valute>> GetItems()
    {
        var client = new HttpClient();
        var content = await client.GetAsync("https://www.cbr-xml-daily.ru/daily_json.js");
        string json = await content.Content.ReadAsStringAsync();

        var obj = JObject.Parse(json)["Valute"].ToString();
        return JsonConvert.DeserializeObject<Dictionary<string, Valute>>(obj).Select(x => x.Value);
    }
}

Гуглил данную проблему как у меня, но везде в вопросах пишутся одинаковые роуты и понятно почему ломается, но почему ломается у меня - не пойму. У меня только 1 контроллер с двумя роутами, откуда несколько совпадений? Когда убираю метод GetCurrenciesPaged, то всё нормально работает. В чем может быть дело?


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

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

Не знаю почему оно ругалось, но я изменил атрибуты над методами следующим образом:

[HttpGet("{id}")] //по существу изменил только вот это, добавил параметр.
[ActionName("currency")]
public async Task<Valute> GetCurrency(string id) {//}

[HttpGet]
[ActionName("currencies")]
public async Task<IEnumerable<Valute>> Currencies([FromQuery] CurrencyPageParameters @params)

Если найдется знающий человек и даст нормальный ответ - буду только рад)

→ Ссылка