Пропустить десятичное значение в URL-адресе WebAPI 2

Я создаю метод Web Api (v2.0), который должен принимать десятичное значение в качестве его параметра.

Я получаю 404 не найденную ошибку, если я использую следующий URL-адрес:

http://localhost:4627/api/Product/Eligibility/10.5

Но он работает, если я использую следующий URL-адрес для параметра Int:

Http://localhost:4627/api/Product/Eligibility/10

Это два соответствующих метода в api:

// GET api/Product/Eligibility/10.0
[Route("api/Product/Eligibility/{amount:decimal}")]
public decimal GetEligibiilty(decimal amount)
{
    return amount;
}

// GET api/Product/Eligibility/10
[Route("api/Product/Eligibility/{amount:int}")]
public decimal GetEligibiilty(int amount)
{
    return amount;
}

Стив

Ответ 1

Получил его, добавив "/" в конец URL-адреса!

http://localhost:4627/api/Product/Eligibility/10.5/

Найти этот метод:

// GET api/Product/Eligibility/10.5/
[Route("api/Product/Eligibility/{amount:decimal}/")]
public decimal GetEligibiilty(decimal amount)
{
    return amount;
}

Стив

Ответ 2

Недавно я столкнулся с этой проблемой при работе с веб-API в Visual Studio 2015. Я решил проблему, добавив ? parameterName = decimalValue в конце URL-адреса. В вашем случае может быть что-то похожее на это:

http://localhost:4627/api/Product/Eligibility?amount=10.5

Надеюсь, это поможет.

Ответ 3

имел аналогичную проблему с передачей десятичного числа в URL-адресе, любой, кто использует веб-страницы asp.net здесь, является решением при перенаправлении после транзакции, а переменная 'amount' имеет десятичное значение в ней:

Response.Redirect(@Href("~/Thankyou", amount + "/"));