| Понедельник, 29 апреля, 2013
Метки: ASP.NET Web API Комментарии: 0
Контроллер:
public class ValuesController : ApiController { // GET api/values public IEnumerableGet() { return new string[] { "value1", "value2" }; } // GET api/values/5 public string Get(int id) { return "value"; } // POST api/values public void Post([FromBody]string value) { } // PUT api/values/5 public void Put(int id, [FromBody]string value) { } // DELETE api/values/5 public void Delete(int id) { } [HttpGet] public void Machines() { } public void Machines(int id) { } }
Маршрут:
config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { action = "get", id = RouteParameter.Optional } );
Тест: Следующие пути работают корректно.
Но путь /api/Values/1 возвращает ошибку 404.
Обзор результатов:
Анализ результатов:
Тут есть два важных момента:
Отладчик маршрутов показывает, что в адресе, http://localhost:xxx/api/values/1, именем метода действия является "1", но такого метода не существует.
Решение:
Использовать одну стратегию задания соответствия метода действия. Или по url или по умолчанию.
Copyright © CodeHint.ru 2013-2025 (v2.4.7 - работает на Angular Universal)Калькулятор инвест-портфеля