2012-10-07 15 views
79

Il mio percorso è configurato correttamente ei miei metodi hanno il tag decorato. Ricevo ancora "La risorsa richiesta non supporta il messaggio HTTP 'GET'" messaggio?La risorsa richiesta non supporta il metodo HTTP 'GET'

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

Qui sono le mie vie:

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 } 
); 

risposta

190

Si prega di utilizzare gli attributi dalla System.Web. Http namespace sulle vostre azioni WebAPI:

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

Il motivo per cui non funziona è perché si stava utilizzando gli attributi che sono dalla MVC namespace System.Web.Mvc. Le classi nel namespace System.Web.Http sono per WebAPI.

+8

Dannazione .. grazie! stavo per diventare pazzo lol incredibile come si può perdere tempo in cose così piccole .. – Rushino

+1

Perché questa è la risposta corretta? –

+1

In effetti, una spiegazione di ** perché ** questa è la risposta corretta è certamente necessaria qui! – Jaxidian

Problemi correlati