0

我正在尝试Route完全根据this从基本 Controller 继承属性。虽然它似乎工作正常,但它搞乱了以前的工作动作。

下面是我的基本控制器和子控制器的最小示例。

[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(for All) 的情况下,ActionSelector返回 2 个动作,既AllLookupData,从而导致错误。

我不确定为什么Route即使在常规路线的情况下它也会选择具有属性的操作。我应该做些什么不同的事情?或者有什么可靠的方法来ActionSelector解决这个问题?

4

1 回答 1

0

尝试将空 [Route] 添加到All方法:

[HttpGet]
[Route]
public IEnumerable<TDto> All(){
    ...
}
于 2016-08-25T05:20:25.897 回答