Wpis ograniczenia „httpMethod” na trasie musi mieć wartość ciągu
Mam projekt Web API asp.net i w moimWebApiConfig
mam zdefiniowaną następującą trasę:
config.Routes.MapHttpRoute(
name: "Web API Get",
routeTemplate: "api/{controller}",
defaults: new { action = "Get" },
constraints: new { httpMethod = new HttpMethodConstraint("GET") }
);
Do celów testowania integracji chcę złożyć wniosek doHttpSelfHostServer
aby sprawdzić, czy otrzymujemy właściwe dane z połączenia api. RobięHttpRequestMessage
następująco:
var httpMethod = new HttpMethod("GET");
var request = new HttpRequestMessage(httpMethod, "http://localhost:XXXX/api/User/");
var results = _client.SendAsync(request).Result;
Spodziewałbym się, że wywołałoby to metodę Get na kontrolerze UserController, a następnie zwróci wyniki zgodnie z definicją w tej metodzie. Zamiast tego otrzymuję następujący wyjątek:
System.InvalidOperationException: Wpis ograniczenia „httpMethod” na trasie z szablonem trasy „api / {controller}” musi mieć wartość ciągu lub być typu, który implementuje „IHttpRouteConstraint”
Ten sam adres URL (http://localhost:XXXX/api/User/
) działa bezbłędnie, gdy używam go w przeglądarce, więc jestem pewien, że problem musi dotyczyć sposobu wysyłania żądania doHttpSelfHostServer
przezHttpClient
. Próbowałem użyćHttpMethod.Get
zamiast tego stała, ale to również rzuciło ten sam błąd.
Czy ktoś ma jakiś pomysł, jak mogę rozwiązać ten problem?