маршрутизаторы настроены таким образом:ASP.NET Основной маршрут не работает
app.UseMvc(routes =>
{
routes.MapRoute(
name: "api",
template: "api/{action}/{id?}");
});
app.UseMvc(routes =>
{
routes.MapRoute(
name: "spa-fallback",
template: "{*url}",
defaults: new { controller = "Home", action = "Index"});
});
Действие контроллера Я пытаюсь запроса выглядит следующим образом: // GET апи/значения/5
[HttpGet("{id}")]
public string Get(int id)
{
return "value" + id;
}
Когда я запрашиваю http://localhost:54057/api/values/get, я возвращаю «значение0».
Когда я запрашиваю http://localhost:54057/api/values/get, я возвращаю «значение0».
Когда я прошу http://localhost:54057/api/values/get/5, я возвращаюсь к 404 не найден.
Неправильно настроены ли мои маршруты или почему параметр «id» не передан из URL-адреса в действие контроллера?
[Отладчик маршрутизации ASP.NET] (http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx/) FTW! –
Попробуйте '{id: int}'. А затем в методе «return» value «+ id.ToString();' – nurdyguy
В ваших примерах вам не нужно включать «/ get» в конец URL-адреса. URL-адрес должен быть просто «/ api/values / 5», и если тип запроса является «get», он будет соответствующим образом ударять это действие (с изменением, предложенным в ответе ниже). – mgiesa