2013-07-30 73 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"] 
     ); 
    } 
} 
相關問題