加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

Asp.net Web API:控制器上未找到任何操作

发布时间:2020-12-16 09:38:54 所属栏目:asp.Net 来源:网络整理
导读:所以这真的让我很头疼. 路线: config.routes.MapHttpRoute( name: 'ControllerAction',routeTemplate: "api/{controller}/{action}" ); 控制器: public class LookupsController : ApiControllerBase{ [ActionName("all")] public Lookups GetLookups() {
所以这真的让我很头疼.

路线:

config.routes.MapHttpRoute(
            name: 'ControllerAction',routeTemplate: "api/{controller}/{action}"
        );

控制器:

public class LookupsController : ApiControllerBase
{
    [ActionName("all")]
    public Lookups GetLookups()
    {
        var lookups = new Lookups
        {
            Customers = GetCustomers().ToList(),//add more
        };
        return lookups;
    }

}

但是当我试图击中uri时:/ api / lookups / all
我收到404错误说:

“在控制器’Lookups’上找不到与’all’相匹配的动作.”

任何帮助,将不胜感激

编辑:
所以我终于明白了.
这是因为错误的依赖性.
VS2012将操作自动解析到system.web.mvc.actionnameattribute,而我需要的是system.web.http.actionnameattribute.

奇怪的问题,反正,我希望这有助于其他人.

解决方法

雅各布李,

编辑:

您正在重命名控制器但未指定方法. WebApi从前缀GET,PUT,DELETE,POST中解析该方法.因此,method属性必须放在action的签名处:

试试这个,对我有用:

public class LookupsController : ApiControllerBase
{
    [HttpGet()]
    [ActionName("All")]
    public Lookups GetLookups()
    {
        var lookups = new Lookups
        {
            Customers = GetCustomers().ToList(),//add more
        };
        return lookups;
    }

}

routes.MapHttpRoute(
name: "ActionApi",routeTemplate: "api/{controller}/{action}/{id}",defaults: new { id = RouteParameter.Optional }

);

有关路由的更多信息,请查看此处:

Routing in ASP.NET Web API

希望对你有所帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读