簡體   English   中英

ASP.NET Core - 覆蓋默認的 ControllerFactory

[英]ASP.NET Core - Overriding the default ControllerFactory

我處於一種非常特殊的情況,我想覆蓋默認的 ASP.NET Core ControllerFactory。 我想這樣做是因為我想完全控制我處理每個請求的控制器類型。

場景是:

  1. 請求帶有特定的子域
  2. 基於這個子域,我想在工廠里解析一個Generic類型的controller

例如:

  1. category.website.com被稱為
  2. 我們看到它是category ,將使用通用的HomeController<T> ,使用 DI 注入類別,因此類型是HomeController<Category>
  3. HomeController<Category>將在類型Category方法上使用一些通用方法來呈現主頁。

如果我被引導相信此鏈接,則在應用程序啟動時會注冊一個類型為DefaultControllerFactory的工廠。 這似乎是不可逾越的。

知道我會怎么做嗎? 對我們來說最合乎邏輯的選擇是使用舊的 ASP.NET MVC 版本,它允許您設置自己的 ControllerFactory,但我們會失去一些功能,例如能夠使用SpaServices來預呈現我們的 Angular 應用程序。

在調用 AddMvc 后,在 ConfigureServices 中注冊您自己的實現:

services.AddSingleton<IControllerFactory, MyCustomControllerFactory>();

這樣,無論何時要構建控制器,它都會被調用。

為了完整起見,最好的方法是實際實現 IControllerActivator 並注冊它,因為默認控制器工廠不是公共的。 它將使用注冊的 IControllerActivator 的任何實現來實際創建控制器類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM