2016-08-18 8 views
0

我試圖從this繼承基本控制器的Route屬性。雖然它看起來能夠正常工作,但是它破壞了以前的工作行爲。繼承路由屬性混淆了Web API中已有的操作

下面是我的基地和兒童控制器的一個最小的例子。

[RoutePrefix("api/{controller}")] 
public class MyController<TEntity, TDto>: ApiController{ 
    [HttpGet] 
    public IEnumerable<TDto> All(){ 
     ... 
    } 

    [HttpGet, Route("lookup")] 
    public virtual IEnumerable<TDto> LookupData(){ 
     ... 
    } 
} 

[RoutePrefix("api/entity")] 
public class EntityController : MyController<Entity, DTO> 
{   
} 

實施路線後屬性繼承,該api/entity/lookup動作的作品,但在api/entity(用於All),ActionSelector回報2個動作,既AllLookupData,情況因此引起的錯誤。

我不確定它爲什麼選擇具有Route屬性的動作,即使在常規路線的情況下也是如此。我應該做什麼不同?或者是否有任何強大的方法來編寫ActionSelector這個問題?

回答

0

嘗試增加空〔路線]至All方法:

[HttpGet] 
[Route] 
public IEnumerable<TDto> All(){ 
    ... 
}