2016-09-23 4 views
0

маршрутизаторы настроены таким образом: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-адреса в действие контроллера?

+0

[Отладчик маршрутизации ASP.NET] (http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx/) FTW! –

+0

Попробуйте '{id: int}'. А затем в методе «return» value «+ id.ToString();' – nurdyguy

+0

В ваших примерах вам не нужно включать «/ get» в конец URL-адреса. URL-адрес должен быть просто «/ api/values ​​/ 5», и если тип запроса является «get», он будет соответствующим образом ударять это действие (с изменением, предложенным в ответе ниже). – mgiesa

ответ

0

Думаю, вам нужно указать контроллер, а не действие. Ваш маршрут должен быть определен как:

app.UseMvc(routes => 
{ 
    routes.MapRoute(
     name: "api", 
     template: "api/{controller}/{id?}"); <-- Note the change here 
}); 

app.UseMvc(routes => 
{ 
    routes.MapRoute(
     name: "spa-fallback", 
     template: "{*url}", 
     defaults: new { controller = "Home", action = "Index"}); 
}); 

Причина вы получаете результаты, когда параметр не был указан был, скорее всего, из-за маршрут отступления называют. Если вы хотите узнать, какой маршрут вызывается, просмотрите эту статью по адресу Route Debugging.

+3

Этот пакет отладки, похоже, не работает с ядром – Guerrilla

Смежные вопросы