2012-10-07 36 views
79

Tuyến đường của tôi được định cấu hình chính xác và phương pháp của tôi có thẻ được trang trí. Tôi vẫn nhận được "Tài nguyên được yêu cầu không hỗ trợ phương thức HTTP 'GET'"?Tài nguyên được yêu cầu không hỗ trợ phương thức 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"; 
} 

Dưới đây là tuyến đường của tôi:

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

Trả lời

190

Vui lòng sử dụng các thuộc tính từ System.Web. Http namespace vào các hành động WebAPI của bạn:

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

Lý do tại sao nó không hoạt động là bởi vì bạn đang sử dụng các thuộc tính là từ MVC namespace System.Web.Mvc. Các lớp học trong không gian tên System.Web.Http là dành cho WebAPI.

+8

Chết tiệt .. cảm ơn! tôi sắp điên cuồng không thể tin được làm thế nào bạn có thể lãng phí thời gian vào những thứ nhỏ như vậy .. – Rushino

+1

Tại sao câu trả lời này lại đúng? –

+1

Thật vậy, một giải thích về ** tại sao ** đây là câu trả lời đúng là chắc chắn cần thiết ở đây! – Jaxidian

Các vấn đề liên quan