请求的资源不支持http方法'GET'ASP MVC

时间:2013-07-30 20:44:35

标签: ajax asp.net-mvc-4 knockout.js

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

1 个答案:

答案 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"]
        );
    }
}