| Понедельник, 29 апреля, 2013
Метки: ASP.NET Web API Комментарии: 0
Проблема: URL не соответствует маршруту MachineApi. Контроллер и маршрут показаны ниже.
Контроллер:
public class MachineController : ApiController
{
public IEnumerable<Machine> Get()
{
return new List<Machine>{
new Machine {
...
}
};
}
public IEnumerable<Machine> All(string code)
{
return new List<Machine>
{
new Machine
{
...
}
};
}
}
Маршрут:
config.Routes.MapHttpRoute(
name: "MachineApi",
routeTemplate: "api/machine/{code}/all"
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Тестируем http://localhost/api/machine/somecode/all в отладчике маршрутов:
Обзор результатов:
Анализ:
Отладчик маршрутов показывает, что не найдено значение “controller” в данных маршрутов или в значениях по умолчанию, а выбор нужного контроллера зависит от этого значения и оно должно быть задано.
Решение:
Нужно добавить значение по умолчанию для указания контроллера.
config.Routes.MapHttpRoute(
name: "MachineApi",
routeTemplate: "api/machine/{code}/all",
defaults: new { controller = "Machine" }
);
После этого изменения ответ HTTP будет 200, контроллер и метод действия найдены и выделены зеленым цветом.
Copyright © CodeHint.ru 2013-2025 (v2.4.7 - работает на Angular Universal)Калькулятор инвест-портфеля