是否可以继承控制器

本文关键字:控制器 继承 是否 | 更新日期: 2023-09-27 18:34:48

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

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

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

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

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

我是否缺少额外的设置来实现此目的,或者是否不支持?

是否可以继承控制器

你可以继承,但我不确定是否[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() {
} 
}