Der Einschränkungseintrag 'httpMethod' auf der Route muss einen Zeichenfolgewert haben
Ich habe ein asp.net Web API Projekt und in meinemWebApiConfig
datei habe ich folgende route definiert:
config.Routes.MapHttpRoute(
name: "Web API Get",
routeTemplate: "api/{controller}",
defaults: new { action = "Get" },
constraints: new { httpMethod = new HttpMethodConstraint("GET") }
);
Zu Zwecken des Integrationstests möchte ich eine Anfrage an einen sendenHttpSelfHostServer
um zu überprüfen, ob wir die richtigen Daten vom API-Aufruf zurückerhalten. Ich mache dasHttpRequestMessage
wie folgt:
var httpMethod = new HttpMethod("GET");
var request = new HttpRequestMessage(httpMethod, "http://localhost:XXXX/api/User/");
var results = _client.SendAsync(request).Result;
Ich würde erwarten, dass dies die Get-Methode auf dem UserController aufrufen und dann die in dieser Methode definierten Ergebnisse zurückgeben würde. Stattdessen erhalte ich jedoch die folgende Ausnahme:
System.InvalidOperationException: Der Einschränkungseintrag 'httpMethod' auf der Route mit der Routenvorlage 'api / {controller}' muss einen Zeichenfolgewert oder einen Typ haben, der 'IHttpRouteConstraint' implementiert.
Dieselbe URL (http://localhost:XXXX/api/User/
) funktioniert fehlerfrei, wenn ich es im Browser verwende, daher bin ich mir ziemlich sicher, dass das Problem so sein muss, wie ich die Anfrage an die sendeHttpSelfHostServer
durch dieHttpClient
. Ich habe versucht mit derHttpMethod.Get
stattdessen konstant, aber das warf auch den gleichen Fehler.
Hat jemand eine Idee, wie ich dieses Problem beheben könnte?