我有一个MVC api并使用控制器来访问我的数据,但我使用ajax和knockoutjs来调用我的方法,但是我收到以下错误:请求的资源不支持http方法'GET'。我尝试在我的控制器方法的顶部使用[HttpGET],但它仍然无法正常工作。我不知道如何解决这个问题。
敲击ViewModel进行我的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"]);
}
}
答案 0 :(得分: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"]
);
}
}