Запись ограничения «httpMethod» на маршруте должна иметь строковое значение
У меня есть проект веб-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» по маршруту с шаблоном маршрута 'апи / {контроллер}» должен иметь строковое значение или иметь тип, который реализуетIHttpRouteConstraint»
Это же URL (http://localhost:XXXX/api/User/
) работает без ошибок, когда я использую его в браузере, поэтому я почти уверен, что проблема заключается в том, как я отправляю запросHttpSelfHostServer
сквозьHttpClient
, Я пытался использоватьHttpMethod.Get
константа вместо этого, но это также бросило ту же ошибку.
У кого-нибудь есть идеи, как я мог решить эту проблему?