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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage