2013-03-20 92 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