ASP.NET Core - 覆盖默认的ControllerFactory

Wes*_*oth 6 c# dependency-injection asp.net-core-mvc asp.net-core

我处于一个非常特殊的情况,我想覆盖默认的ASP.NET Core ControllerFactory.我想这样做是因为我想完全控制我处理每个请求的控制器类型.

场景是:

  1. 请求带有特定的子域
  2. 基于此子域,我想在工厂中解析Generic类型控制器

例如:

  1. category.website.com 叫做
  2. 我们看到它的类型category并将使用泛型HomeController<T>,使用DI注入类别,因此类型是HomeController<Category>
  3. 在HomeController<Category>将使用类型一些通用的方法Category方法来呈现网页.

如果我被引导相信此链接,DefaultControllerFactory则在应用程序启动时注册类型的工厂.这似乎不可以覆盖.

知道怎么回事吗?对我们来说最合乎逻辑的选择是使用旧的ASP.NET MVC版本,它允许您设置自己的ControllerFactory,但我们失去了能够SpaServices用于预呈现我们的Angular应用程序的功能.

Ric*_*res 11

在调用AddMvc后,在ConfigureServices中注册您自己的实现:

services.AddSingleton<IControllerFactory, MyCustomControllerFactory>();
Run Code Online (Sandbox Code Playgroud)

这样,无论何时构建控制器,都会调用它.