| Понедельник, 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-2024 (v2.4.7 - работает на Angular Universal)Калькулятор инвест-портфеля