2013-07-30 74 views
0

我有一个MVC API,并使用控制器来访问我的数据,但我使用ajax和knockoutjs来调用我的方法,但我得到以下错误:请求资源不支持http方法'GET'。我曾尝试在我的控制器方法的顶部使用[HttpGET],但它仍然不起作用。我不知道如何解决这个问题。所请求的资源不支持http方法'GET'ASP MVC

敲视图模型做我的API调用:

vm = { 
     Data: ko.observable(), 
     Bound: 0, 

     Load: function() { 
      $.ajax({ 
       type: "GET", 
       url: "../api/adusers", 
       contentType: "application/json;charset=utf-8", 
       success: function (result) { 
        vm.Data(ko.utils.unwrapObservable(ko.mapping.fromJS(result))); 

        if (!vm.Bound) { 
         ko.applyBindings(vm, document.getElementById("form1")); 
         $('#tableUsers').show(); 
         vm.Bound = true; 
        } 
       }, 
       error: function (xhr, status) { 
        alert(status + " - " + xhr.responseText); 
       } 
      }) 
     } 
    } 

API控制器:

public class ADUsersController : ApiController 
{ 
    [HttpGet] 
    public static List<Models.Users> GetADUsers() 
    { 
     return AD.GetUsers(System.Configuration.ConfigurationManager.AppSettings["NETBios"] 
      , System.Configuration.ConfigurationManager.AppSettings["Container"] 
      , System.Configuration.ConfigurationManager.AppSettings["ADServerUN"] 
      , System.Configuration.ConfigurationManager.AppSettings["ADServerPW"]); 
    } 
} 
+4

我很确定不支持'static'控制器操作。尝试从你的'GetADUsers'方法中去除'static'! – nemesv

+0

非常感谢你,我从来没有想到这一点。有用 – Gericke

回答

2

你宣布你的控制器行动,这显然是不支持static。控制器操作是实例方法。所以请确保你宣布你的行为是一个实例方法:

public class ADUsersController : ApiController 
{ 
    [HttpGet] 
    public List<Models.Users> GetADUsers() 
    { 
     return AD.GetUsers(
      System.Configuration.ConfigurationManager.AppSettings["NETBios"], 
      System.Configuration.ConfigurationManager.AppSettings["Container"], 
      System.Configuration.ConfigurationManager.AppSettings["ADServerUN"], 
      System.Configuration.ConfigurationManager.AppSettings["ADServerPW"] 
     ); 
    } 
} 
相关问题