Web API路由 - 如何使默认路由忽略命名方法?

时间:2013-03-20 23:12:47

标签: routing asp.net-web-api

说我在控制器中有这些方法:

Get() 

[HttpGet]
FindSomeone()

我有一个默认路由和一个包含操作的路由: routeTemplate:“api / {controller} / {action}”

当我调用/ mycontroller / FindSomeone时工作正常,但当我调用GET / mycontroller /时出现多个匹配路由错误。

有没有办法让默认路由只匹配Get()方法,并跳过FindSomeone()方法?

2 个答案:

答案 0 :(得分:0)

为主路由

中的所有控制器声明默认Get操作
config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional, action ="Get" }
    );

答案 1 :(得分:0)

在这种情况下,AttributeRouting可以更好地为您工作。它应该像使用Get Attribute,

装饰这两个方法一样简单
[RoutePrefix("mycontroller")
public class MyController 
{
  [GET("")]
  Get() 

  [GET("FindSomeone")]
  FindSomeone()
}

这将使这些方法可用作mycontroller和mycontroller / FindSomeone。