一种方法所需的HttpGet属性,但不是另一种方法

时间:2016-10-26 16:35:53

标签: javascript c# asp.net-web-api

我正在进行Web API调用,但我收到此错误:

  

405不允许的方法
所请求的资源不支持http   方法' GET'。

这是电话:

    var config = {
        url: rootWebApiUrl + '/api/containerMove/allowMultipleBoxesPerMove',
        method: 'GET'
    };

    $http(config)
        .then(function (response) {
            // code here
        }, function (response) {
            // code here
        });

如果我将HttpGet属性添加到Web API方法,它可以工作:

[HttpGet]
[Route("api/containerMove/allowMultipleBoxesPerMove")]
public bool AllowMultipleBoxesPerMove()

我不明白的是,我在同一个Web API控制器上进行的其他调用不需要HttpGet。这是一个没有HttpGet属性的作品:

        var config = {
            url: rootWebApiUrl + '/api/containerMove/getBatchRefreshInterval',
            method: 'GET'
        };

        $http(config)

Web API方法:

[Route("api/containerMove/getBatchRefreshInterval")]
public int GetBatchRefreshInterval()

那么为什么我需要在一个Web API方法上使用HttpGet而不在另一个上?那些调用和API方法几乎相同。

1 个答案:

答案 0 :(得分:5)

Bob,Web API有一个约定优于配置的范例,因此,在这种情况下,名称以Get开头的所有操作都将与HTTP Get相关联,这就是 get BatchRefreshInterval不需要属性[HttpGet]