【问题标题】:Specify proper route to call a WebApi 2 Controller method指定正确的路由来调用 Web Api 2 Controller 方法
【发布时间】:2018-08-20 21:31:08
【问题描述】:

我创建了一个将返回代理列表的 PublicController.cs。然后我构建并运行项目并打开 Postman 更改模式以获取并调用 http://localhost:50159/api/public/Agents 我得到的消息是

{
    "Message": "No HTTP resource was found that matches the request URI 'http://localhost:50159/api/public/Agents'.",
    "MessageDetail": "No action was found on the controller 'Public' that matches the request."
}

我有什么遗漏吗?

    [HttpGet]
    public IHttpActionResult Agents(string key, string diseaseId)
    {
        GuardKey(key);

        var result = AgentsDataService.GetAgents();



        return Json(result);
    }

【问题讨论】:

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


【解决方案1】:

默认情况下,WebApi 2 控制器的名称是按约定注册的,即PublicController 在运行时为我们提供/api/Public

您尝试访问api/public/Agents,但您的控制器可能位于api/Public。 您需要在 RouteConfig.cs 中指定 Route 或将 Route 应用为方法的属性。

有一个很好的 Microsoft article 可以更准确地描述路线。

【讨论】:

  • 我检查了 RouteConfig.cs,它有用于路由 routes.MapHttpRoute("DefaultApiWithAction", "Api/{controller}/{action}");的 API/controller/action;
  • 确实 outes.MapHttpRoute("DefaultApiWithAction", "Api/{controller}/{action}"); 将处理您在控制器中的方法之前指定的路由属性。您需要指定一个自定义的 - 适合您需要的那个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-23
  • 2013-04-08
  • 1970-01-01
  • 1970-01-01
  • 2017-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多