La ressource demandée ne prend pas en charge la méthode HTTP 'GET'

Mon itinéraire est correctement configuré, et mes méthodes ont la balise décorée. Je reçois toujours" la ressource demandée ne supporte pas la méthode HTTP 'GET' " message?

[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";
}

Voici mes itinéraires:

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 }
);
87
demandé sur Sahar Ch. 2012-10-07 06:35:41

2 réponses

, Veuillez utiliser les attributs du Système.Web. Http espace de noms sur vos actions WebAPI:

    [System.Web.Http.AcceptVerbs("GET", "POST")]
    [System.Web.Http.HttpGet]
    public string Auth(string username, string password)
    {...}

La raison pour laquelle cela ne fonctionne pas est que vous utilisiez les attributs provenant de l'espace de noms MVC System.Web.Mvc. Les classes de l'espace de noms System.Web.Http sont pour WebAPI .

201
répondu Maggie Ying 2014-07-26 19:54:01

Utilisez simplement cet attribut

[System.Web.Http.HttpGet]

Pas besoin de cette ligne de code:

[System.Web.Http.AcceptVerbs("GET", "POST")]
0
répondu Kashif Faraz 2018-07-30 09:52:29