0

我有一个 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"]);
    }
}
4

1 回答 1

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"]
        );
    }
}
于 2013-07-30T20:53:22.003 回答