【问题标题】:WebAPI: No action was found on the controller 'MobileApp' that matches the name 'services'WebAPI:在控制器“MobileApp”上找不到与名称“服务”匹配的操作
【发布时间】:2018-03-02 20:50:05
【问题描述】:

我已经配置了以下

config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

config.Routes.MapHttpRoute(
    name: "DefaultApiWithAction",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

并具有以下网络 api

public class MobileAppController : ApiController
{
    [HttpGet, Route("api/mobileapp/services")]
    public dynamic services()
    {
        return new { Abc = 123 };
    }   
}

调用http://localhost:123/api/mobileapp/services时出现错误

在控制器“MobileApp”上找不到与名称“服务”匹配的操作

【问题讨论】:

  • 可以分享一下WebApiConfig吗?
  • 您的WebApiConfig.cs 中有config.MapHttpAttributeRoutes(); 吗?
  • @Igor 是的,如果您没有将 config.MapHttpAttributeRoutes(); 这一行添加到您的 api 配置中,则方法路由不起作用。
  • 是的,我有 config.MapHttpAttributeRoutes();
  • 你的启动中的代码真的被调用了吗?它会执行你的路由配置吗?

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


【解决方案1】:

将action的返回值改为IActionResult

【讨论】:

  • 这没有意义。他可以返回动态对象
  • @arslanaybars 是的,但 API 永远不应返回 dynamic
  • 这与“未找到任何操作”异常抛出的事实无关。动态可能不是最好的解决方案,但这是另一回事
  • @DavidG ofc 返回动态可能不是好的做法。但问题的问题看起来有些不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-30
  • 2016-01-10
  • 2019-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-16
相关资源
最近更新 更多