У меня есть следующий код, и я не могу заставить имя действия работать или что-то еще не так? Я хочу создать пользовательский поиск, где обычно, когда вы ищете один объект в api, вы ищете идентификатор, но я бы хотел, например, искать рабочий день, но это действительно может быть что угодно.Маршрутизация веб-API не работает должным образом (имена действий)
DayController.cs:
[ActionName("Weekday")]
public IHttpActionResult GetDayWeek(string q_day) {
var day = controller.GetDay(q_day);
if (day == null) {
return NotFound();
}
return Ok(day);
}
Controller.cs:
public Day GetDay(string q_day) {
var day = dal.GetDayByWeekday(q_day);
return day;
}
Dal.cs:
public Day GetDayByWeekday(string q_day) {
var day = db.Day.Where(d = > d.Weekday == q_day).Single();
return day;
}
WebApiConfig.cs:
public static void Register(HttpConfiguration config) {
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new {
id = RouteParameter.Optional
});
}
Ошибка:
<Error>
<Message>
No HTTP resource was found that matches the request URI 'http://localhost:2096/api/Day/Weekday/monday'.
</Message>
<MessageDetail>
No action was found on the controller 'Day' that matches the request.
</MessageDetail>
</Error>
Im не мастер с Web API - но у попытаться добавить атрибут [HttpPost] методу, а? и убедитесь, что вы выполняете post-request из javascript? – CoBolt
Я думаю, что я должен был бы проверить api без каких-либо js, например, «/ api/Day/Weekday/monday»? – btmach
Да, так же, как вы убедитесь, что его POST-запрос, а не GET/PUT/DELETE-запрос – CoBolt