在 C# 中,是否可以有一个单独的路由器和控制器?

In C#, is it possible to have a separate Router and Controllers?

我目前正在重构一个 ASP.NetCore 2.18.0 项目,其中包含一个责任太多的控制器。我其实想把它分成 4 个独立的控制器。问题是,我不想让消费者更新他们的解决方案,所以虽然我希望逻辑存在于不同的控制器上,但我希望保持路由的当前状态:

合同列表控制器

合同工厂控制器

ContractLinkController

ContractDocuSignController

有没有一种方法可以创建一个路由器,它将 Http 请求定向到适当的控制器,而不是在控制器上使用注释?

FWIW,我在项目的任何地方都找不到 MapControllerRoute。控制器有 [Route("api/v{version:apiVersion}/[controller]")] 然后方法有像 [Route("listAll/{customerReference}")]

这样的属性

这实际上比我预期的要简单。

我原来的控制器 class 有这样的属性:

[RequireHttps]
[Authorize]
[ApiController]
[ApiVersion("1.0")]
[Route("api/v{version:apiVersion}/[controller]")]
public class ContractController : Controller
{
  // whatever
}

我需要做的就是:

  1. 创建四个控制器,每个控制器具有相同的属性并扩展 Controller
  2. [Route("api/v{version:apiVersion}/[controller]")]替换为[Route("api/v{version:apiVersion}/Contract")]
  3. 删除原来的控制器。