【问题标题】:Requested method in webapi controller doesn't support getwebapi控制器中请求的方法不支持get
【发布时间】:2016-05-20 06:51:44
【问题描述】:

我收到此错误

{
    "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

【问题讨论】:

  • 您可以发布您的路线配置吗?并且尽量不要同时标记HTTP 方法,明确指定[HttpGet][HttpPost]
  • @AmitKumarGhosh:对不起,伙计,我有正确的属性,它适用于除此之外的所有其他控制器。而且也只有这个动作。我有一个帖子动作,可以很好地命中。不过,我可以向您发布路线配置。
  • @AmitKumarGhosh:伙计,两个控制器都使用相同的默认 webapi 配置,我也没有发现问题。
  • 通知路由定义和请求创建。我在 url /api/history/2019211/history 上感觉有些痒,但我们不是女巫,我们需要更多信息。

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


【解决方案1】:

你确定你正确调用了 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 方法吗?如果是这样,您可以提供一个虚拟参数,但每个控制器操作方法的路由应该是唯一的。

【讨论】:

  • 按照其他方法和控制器,我的一切都是正确的。其他具有自定义名称的控制器中的相同方法(类似获取)可以工作并获取我的数据。问题是,此控制器中未命中此操作方法。为什么?我有相同的配置
  • 我会在该控制器中的所有操作方法上设置一个断点,看看它是否会遇到不同的操作方法
猜你喜欢
  • 2015-10-08
  • 2017-10-17
  • 1970-01-01
  • 2020-08-14
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 2018-12-24
  • 2017-10-21
相关资源
最近更新 更多