webapi控制器中请求的方法不支持get

时间:2016-05-20 06:51:44

标签: c# .net model-view-controller asp.net-web-api

我收到此错误

{
    "message":"No HTTP resource was found that matches the request URI 'http://localhost:8227/api/history/2019211/history'.",
    "messageDetail":"No action was found on the controller 'History' that matches the request."
}

但我的行动方法如下。

[HttpGet, Route("history")]
public IHttpActionResult GetHistory(string iD)
{
      var req = historyReq.From(iD);            
      return Ok(Convert.From(req));
}

请记住,它适用于所有其他模块和地点,但是这个。

我怀疑这是由于某些订购?由于此控制器具有HTTPPost和相同路由的另一种方法。这会有问题吗?但该方法的名称不同,即UpdateHistory

1 个答案:

答案 0 :(得分:0)

您确定正确调用GET方法吗?

以下是我目前正在处理的一个示例,它运行正常。

 [RoutePrefix("api/subsection")]
    public class SubSectionController : ApiController
    {
        [HttpGet, Route("subsectionslist")]
        public IHttpActionResult GetSections(int sectionId)
        {
            using (var db = new StudyHubContext())
            {
                var model = db.Section.Where(x => x.SectionId==sectionId)
                    .Include(x => x.SubSection)
                    .Select(x => x.SubSection)
                    .ToList();
                return Json(model);
            }

        }

这就是我所说的(只需将其粘贴到网络浏览器中)

http://localhost:60552/api/subsection/subsectionslist?sectionId=1

你有很多get方法吗?如果是这样,您可以提供虚拟参数,但路径对于每个控制器操作方法应该是唯一的。