我处于非常特定情况,我想覆盖默认的ASP.NET Core ControllerFactory。我想这样做,因为我想完全控制我处理每个请求的控制器类型。
场景是:
例如:
category.website.com
被称为category
类型,并将使用通用HomeController<T>
,使用DI注入类别,因此类型为HomeController<Category>
HomeController<Category>
将在类型Category
方法上使用一些通用方法来呈现主页。如果我导致相信this link,则在应用程序启动时注册DefaultControllerFactory
类型的工厂。这似乎不会过分。
知道我会怎么做到这一点?对我们来说最合乎逻辑的选择是使用旧的ASP.NET MVC版本,它允许您设置自己的ControllerFactory,但我们失去了能够使用SpaServices
预呈现我们的Angular应用程序的功能。
答案 0 :(得分:10)
在调用AddMvc后,在ConfigureServices中注册您自己的实现:
services.AddSingleton<IControllerFactory, MyCustomControllerFactory>();
这样,无论何时构建控制器,都会调用它。