У меня есть проект веб-API asp.net, и в моем файле WebApiConfig
у меня определен следующий маршрут:
config.Routes.MapHttpRoute(
name: "Web API Get",
routeTemplate: "api/{controller}",
defaults: new { action = "Get" },
constraints: new { httpMethod = new HttpMethodConstraint("GET") }
);
В целях интеграционного тестирования я хочу сделать запрос к HttpSelfHostServer
, чтобы убедиться, что мы получаем правильные данные обратно от вызова API. Я делаю HttpRequestMessage
следующим образом:
var httpMethod = new HttpMethod("GET");
var request = new HttpRequestMessage(httpMethod, "http://localhost:XXXX/api/User/");
var results = _client.SendAsync(request).Result;
Я ожидаю, что это вызовет метод Get для UserController, а затем вернет результаты, определенные в этом методе. Однако вместо этого я получаю следующее исключение:
System.InvalidOperationException: запись ограничения «httpMethod» на маршруте с шаблоном маршрута «api/{controller}» должна иметь строковое значение или иметь тип, который реализует «IHttpRouteConstraint»
Этот же URL-адрес (http://localhost:XXXX/api/User/
) работает без ошибок, когда я использую его в браузере, поэтому я почти уверен, что проблема должна заключаться в том, как я отправляю запрос на HttpSelfHostServer
через HttpClient
. Вместо этого я попытался использовать константу HttpMethod.Get
, но это также вызвало ту же ошибку.
Кто-нибудь знает, как я могу решить эту проблему?