2012-10-07 3 views
79

Мой маршрут настроен правильно, и мои методы имеют декорированный тег. Я все еще получаю «Запрошенный ресурс не поддерживает HTTP-сообщение« GET »?Запрошенный ресурс не поддерживает 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"; 
} 

Вот мои маршруты:

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

ответ

190

Пожалуйста, используйте атрибуты из System.Web. Http имен ваших действий WebAPI:

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

Причина, почему это не работает, потому что вы использовали атрибуты, которые из MVC имен System.Web.Mvc. Классы в пространстве имен System.Web.Http предназначены для WebAPI.

+8

Черт .. спасибо! я собирался получить сумасшедший LOL невероятно, как вы можете тратить время на такие мелочи. – Rushino

+1

Почему это правильный ответ? –

+1

Действительно, объяснение ** почему ** это правильный ответ, безусловно, необходимо здесь! – Jaxidian

Смежные вопросы