Meine Route ist korrekt konfiguriert und meine Methoden haben das dekorierte Tag. Ich erhalte immer noch die Meldung "Die angeforderte Ressource unterstützt die HTTP-Methode 'GET' nicht".
[System.Web.Mvc.AcceptVerbs("GET", "POST")]
[System.Web.Mvc.HttpGet]
public string Auth(string username, string password)
{
// Décoder les paramètres reçue.
string decodedUsername = username.DecodeFromBase64();
string decodedPassword = password.DecodeFromBase64();
return "value";
}
Hier sind meine Routen:
config.Routes.MapHttpRoute(
name: "AuthentificateRoute",
routeTemplate: "api/game/authentificate;{username};{password}",
defaults: new { controller = "Game",
action = "Auth",
username = RouteParameter.Optional,
password = RouteParameter.Optional },
constraints: new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { controller = "Home", id = RouteParameter.Optional }
);
c#
routing
asp.net-web-api
Rushino
quelle
quelle
Verwenden Sie einfach dieses Attribut
brauche diese Codezeile nicht:
quelle
In meinem Fall unterschied sich die Routensignatur vom Methodenparameter. Ich hatte eine ID, aber ich akzeptierte documentId als Parameter, was das Problem verursachte.
quelle
Ich hatte das gleiche Problem. Ich hatte bereits 4 Controller, die einwandfrei funktionierten, aber als ich diesen hinzufügte, wurde "Die angeforderte Ressource unterstützt die HTTP-Methode 'GET' nicht" zurückgegeben. Ich habe hier und in einigen anderen relevanten Artikeln alles versucht, war der Lösung jedoch gleichgültig, da, wie Dan B. als Antwort auf die Antwort erwähnte, bereits andere gut funktionierten.
Ich ging eine Weile weg, kam zurück und stellte sofort fest, dass der Controller beim Hinzufügen unter der Klasse "Controller" und nicht unter der Klasse "ApiController" verschachtelt war, unter der sich meine anderen Controller befanden. Ich gehe davon aus, dass ich die falsche Gerüstoption gewählt habe, um die CS-Datei in Visual Studio zu erstellen. Also habe ich den System.Web.Http-Namespace eingefügt, die übergeordnete Klasse geändert und alles funktioniert ohne die zusätzlichen Attribute oder das Routing.
quelle