为什么我的启用路由的HttpGet方法被视为不支持GET?

时间:2016-01-05 23:19:26

标签: c# asp.net-web-api http-get asp.net-web-api-routing http-method

我有一对GET和POST Web API方法可以正常工作。我有另一对似乎设置完全相同的方式,但GET方法拒绝接受调用。所有尝试都以msg结束,“请求的资源不支持http方法'GET'。”

然而(再次)这个GET方法的设置和装饰与工作方法相同。

这是工作的(无标记的“GET”(第一种方法)和标记的“POST”在被调用时成功输入):

AVPlayer

......这里看起来几乎完全相同(当然,名称不同,还有一个参数):

[anAVPlayerObject pause];
[anAVPlayerObject replaceCurrentItemWithPlayerItem:nil];
anAVPlayerObject = nil;

如上所述,使用非工作的第二个块代码,当我尝试调用“GET”时,我得到:

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

我确实设置了属性路由:

[RoutePrefix("api/pricecompliance")]
public class PriceComplianceController : ApiController
{

    [Route("{unit}/{begindate}")]
    public HttpResponseMessage Get(string unit, string begindate)
    {
        . . .


    [Route("{unit}/{begindate}")]
    [HttpPost]
    public void Post(string unit, string begindate)
    {
        . . .

为什么在后一种情况下不支持GET?

当我尝试通过点击带有网址的链接来调用GET时,当我尝试使用“ http://localhost:52194/api/produceusage/gramps/201312/201412 ”从Postman调用它时,我得到同样的“GET不支持”爵士乐。

1 个答案:

答案 0 :(得分:0)

原来我必须改变这个:

public HttpResponseMessage Get(string unit, string beginRange, string endRange)

......对此:

public HttpResponseMessage Get(string unit, string begindate, string enddate)

...以便参数名称与路线中的参数名称完全匹配:

[Route("{unit}/{begindate}/{enddate}")]

为什么这件事我不知道,但确实如此。