asp.net - recurso - se encontraron varias acciones que coincidían con la solicitud post
WebAPI No se encontraron acciones en el controlador (1)
Esto se debe a que existe un desajuste entre los nombres de los parámetros. Desde su ruta, el valor 1 se asigna al parámetro llamado id
y su acción busca un parámetro llamado moduleId
.
La primera opción es cambiar su ruta de esta manera:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{moduleId}",
defaults: new { moduleId = RouteParameter.Optional }
);
En segundo lugar, debe cambiar su URL de esta manera:
http://localhost:37331/api/action/FindByModule?moduleId=1
Entonces el nombre del parámetro coincide.
Obtuve un error: no se encontró ninguna acción en el controlador ''Acción'' que coincida con la solicitud.
La url es http://localhost:37331/api/action/FindByModule/1
.
La ruta que usé es
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Controlador:
public class ActionController : ApiController
{
private IActionRepository repository = null;
[HttpGet]
[ActionName("All")]
public IEnumerable<JsonAction> All()
{
return from action in this.repository.Get()
select new JsonAction
{
ID = action.ID,
Text = action.Text.Trim(),
Description = action.Description.Trim(),
};
}
[HttpGet]
[ActionName("FindByModule")]
public IEnumerable<JsonAction> FindByModule(Int64 moduleId)
{
return from action in this.repository.FindByModule(moduleId)
select new JsonAction
{
ID = action.ID,
Text = action.Text.Trim(),
Description = action.Description.Trim(),
};
}
}