Подтвердить что ты не робот

WebAPI На контроллере не найдено никаких действий

У меня возникла ошибка - на контроллере "Действие" не найдено никаких действий, соответствующих запросу.

URL-адрес http://localhost:37331/api/action/FindByModule/1.

Используемая маршрутизация

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

Контроллер:

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(),
               };
    }
}
4b9b3361

Ответ 1

Это связано с тем, что существует несоответствие имени параметра. С вашего маршрута значение 1 назначается параметру с именем id, и ваше действие ищет параметр с именем moduleId.

Первый вариант - изменить маршрут следующим образом:

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{action}/{moduleId}",
    defaults: new { moduleId = RouteParameter.Optional }
);

Во-вторых, вы должны изменить свой URL следующим образом:

http://localhost:37331/api/action/FindByModule?moduleId=1

Итак, имя параметра соответствует.