Позвольте мне обрисовать ситуацию первый:Почему HttpGet требуется только для некоторых действий?
У меня есть базовый контроллер, который выглядит следующим образом:
public class SearchRequestController : ApiController
{
public IEnumerable<ObjectA> GetAllRequests() {...}
{}
public IEnumerable<ObjectA> GetLatestRequest() {...}
{}
}
Использование следующих маршрутизации
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
Я могу Исли использовать следующие функции
Http://myServer/myvirtualdirectory/api/SearchRequest/GetAllRequests
Http://myServer/myvirtualdirectory/api/SearchRequest/GetLatestRequest
Теперь я хотел добавить е следующий контроллер
public class UserController : ApiController
{
public IEnumerable<UserObject> SearchUsersByInput() {...}
}
Но следующий GET не работает
Http://myServer/myvirtualdirectory/api/User/SearchUsersByInput
I'm getting a 405: {"Message":"The requested resource does not support http method 'GET'."}
Это работает, однако, когда я изменить свою функцию следующим образом:
public class UserController : ApiController
{
[HttpGet]
public IEnumerable<UserObject> SearchUsersByInput() {...}
}
Вопрос: Может кто-то объяснить происхождение этого поведения? Я сделал что-то неправильно или что-то не так с моей маршрутизацией?
Это просто не получилось, потому что вы не указали атрибут и не соблюдали соглашения об именах. –
@JeroenVannevel Thnx для ответа. Атрибут, который вы указываете, является '[HttpGet]' правильным? – User999999