Los enrutadores se configuran de esta manera:
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"});
});
El controlador I action que estoy intentando solicitar tiene este aspecto: // OBTENER api / values / 5
[HttpGet("{id}")]
public string Get(int id)
{
return "value" + id;
}
Cuando pido http://localhost:54057/api/values/get, Vuelvo "value0".
Cuando pido http://localhost:54057/api/values/get, Vuelvo "value0".
Cuando pido http://localhost:54057/api/values/get/5, Devuelvo un 404 No encontrado.
¿Mis rutas están configuradas incorrectamente o por qué el parámetro "id" no se pasa de la URL a la acción del controlador?
Respuestas
0 para la respuesta № 1Creo que necesita especificar el controlador y no una acción. Su ruta debe definirse como:
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"});
});
La razón por la que obtenías los resultados cuando noEl parámetro que se especificó probablemente se debió a la ruta alternativa que se está llamando. Si desea saber qué ruta se invoca, eche un vistazo a este artículo sobre Depuración de ruta.