gpt4 book ai didi

c# - ASP.NET Core - 覆盖默认的 ControllerFactory

转载 作者:太空狗 更新时间:2023-10-29 21:07:59 26 4
gpt4 key购买 nike

我处于非常的特定情况,我想覆盖默认的 ASP.NET Core ControllerFactory。我想这样做是因为我想完全控制我使用哪种类型的 Controller 来处理每个请求。

场景是:

  1. 请求来自一个特定的子域
  2. 基于这个子域,我想在工厂里解析一个Generic类型的controller

例如:

  1. category.website.com被称为
  2. 我们看到它的类型是 category并将使用通用的 HomeController<T> , 使用 DI 注入(inject)类别所以类型是 HomeController<Category>
  3. HomeController<Category>将在类型 Category 上使用一些通用方法呈现主页的方法。

如果让我相信 this link , 类型为 DefaultControllerFactory 的工厂在应用程序启动时注册。这似乎是不可覆盖的。

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

最佳答案

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

services.AddSingleton<IControllerFactory, MyCustomControllerFactory>();

这样,无论何时构建 Controller ,它都会被调用。

为了完整起见,最好的方法是实际实现一个 IControllerActivator 并注册它,因为默认的 Controller 工厂不是公开的。它将使用注册的 IControllerActivator 的任何实现来实际创建 Controller 类。

关于c# - ASP.NET Core - 覆盖默认的 ControllerFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43739794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com