| Понедельник, 29 апреля, 2013
Метки: ASP.NET Web API Комментарии: 0
Контроллер:
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable Get()
{
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)Калькулятор инвест-портфеля