2012-10-07 204 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

该死的..谢谢!我正要变得疯狂大声笑难以置信你怎么可以浪费时间在这样的小事情上...... – Rushino

+1

为什么这是正确的答案? –

+1

事实上,对**的解释**这是正确的答案在这里当然是必要的! – Jaxidian

相关问题