继承Route属性会使Web API中已经存在的操作变得混乱
本文关键字:存在 操作 混乱 属性 Route API Web 继承 | 更新日期: 2023-09-27 18:03:07
我正试图完全根据此从基础控制器继承Route
属性。虽然它似乎工作正确,但它打乱了以前的工作动作。
下面是我的基控制器和子控制器的最小示例。
[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
同时返回All
和LookupData
两个动作,从而导致错误。
我不知道为什么它选择与Route
属性的动作,即使在常规路由的情况下。我应该怎么做?或者是否有任何可靠的方法来编写ActionSelector
来解决这个问题?
尝试为All
方法添加空的[Route]:
[HttpGet]
[Route]
public IEnumerable<TDto> All(){
...
}