无需自定义路线即可拨打Api

时间:2015-11-27 14:03:40

标签: c# asp.net-mvc-5

我可以使用自定义路线呼叫Api。 (网址:'api / WorkItem / 1 / GetOne')

  [HttpGet]
    [Route("api/WorkItem/{id}/GetOne")]
    public async Task<IEnumerable<WorkItemDto>> GetOne(int id)
    {
          //...
    }

但是如果我删除自定义路线,我就无法调用相同的API:

这是我的路线定义:

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

我希望这可以在没有自定义路线的情况下工作,但事实并非如此。 我得到 404-NotFound 。 我做错了什么?

1 个答案:

答案 0 :(得分:0)

两次地图路线。首先是行动,第二次没有

config.Routes.MapHttpRoute(
                         name: "WithAction",
                         routeTemplate: "api/{controller}/{id}/{action}"
                         );

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