2014-06-30 60 views
3

我在WebApiConfig映射以下途徑默認操作:的Web API路由 - 自定義操作映射兩次

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

一個在我的控制,我有:

[HttpGet] 
public ProspectAddressResult Addresses(int id) 
{ 
... 
return result; 
} 

[ActionName("DefaultAction")] 
public ProspectDetail Get(int id) 
{ 
... 
return prospect; 
} 

我發現,我得到的獲取路線兩次映射一次爲api/prospect/1和api/prospect/Get/1。我做錯了什麼,因爲我期望路線只能被映射一次,即api/prospect/1或者是不可能的(或相關的)?

回答

2

爲什麼不直接通過nuget安裝web api 2。然後你可以在你的動作/控制器上使用Route和RoutePrefix屬性來指定你的路由。

那麼你不應該得到重複測繪

這裏有一個如何你的API控制器將成立一個例子:

[RoutePrefix("api/prospect")] 
public class ProspectController: ApiController 
{ 
    [Route("{id}")] 
    public ProspectDetail Get(int id) 
    { 
     ... 
     return prospect; 
    } 
} 

您的這條路線將被API /前景/ 1

+0

謝謝,它看起來像我已經安裝了Web API 2,但沒有意識到我可以用這種方式手動創建我的行爲路線。應用這些和它看起來不錯。 – choms79