2013-03-20 97 views
0

说我有一个控制器的方法:WebAPI路由 - 如何使默认路由忽略命名方法?

Get() 

[HttpGet] 
FindSomeone() 

我有一个默认路由,并用行动路线:routeTemplate: “API/{控制器}/{行动}”

当我打电话给/ mycontroller/FindSomeone时失败,但多个匹配路径失败错误当我打电话给GET/mycontroller /时。

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

+0

为什么不调用'/ mycontroller/get' – 2013-03-21 06:28:06

回答

0

声明默认Get行动在主所有控制器路由

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

这会禁用所有的东西但是Get - 我仍然需要POST/HEAD/etc。 – Evgeni 2013-03-21 00:19:15

+0

它不会禁用任何东西。其他操作(POST,DELETE等)将继续工作。它只在url中未指定时定义默认操作。 – 2013-03-21 10:50:08

0

AttributeRouting migh在这种情况下工作,更好地为您。它应该是因为这两种方法有一个Get属性装潢简单,

[RoutePrefix("mycontroller") 
public class MyController 
{ 
    [GET("")] 
    Get() 

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

这将使可作为和myController的myController的/ FindSomeone这些方法。

+0

我看过它,问题是当你去GET/mycontroller/- 这两个会冲突,因为它们都是GET。 – Evgeni 2013-03-23 12:24:24