是否可以继承控制器?

时间:2016-02-16 19:50:39

标签: c# asp.net-web-api2

我有一个继承自ApiController的控制器:

[RoutePrefix("v0")]
public class MyControllerV0 : ApiController {...}

我想创建所有路线的新版本:

[RoutePrefix("v1")]
public class MyControllerV1 : MyControllerV0 {
    public MyControllerV1() : base() {}
}

当我添加第二个代码段时,MyControllerV0中的路由无法访问,两个前缀都会导致404

我是否还有一个额外的设置文件可以实现此目的,或者是否不支持?

1 个答案:

答案 0 :(得分:0)

您可以继承,但我不确定是否使用[RoutePrefix()]。相反,我们使用完整[Route()]

试试这个:

public class MyControllerV0 : ApiController {
  [Route("/api/v0/foo")]
  public async Task<IHttpActionResult> V0() {

} 
}

public class MyControllerV1 : MyControllerV0 {
  [Route("/api/v1/foo")]
  public async Task<IHttpActionResult> V1() {

} 
}