![](/img/trans.png)
[英]ASP.NET Core 3 - Overriding the default ControllerFactory on custom, how save it call in else cases?
[英]ASP.NET Core - Overriding the default ControllerFactory
我處於一種非常特殊的情況,我想覆蓋默認的 ASP.NET Core ControllerFactory。 我想這樣做是因為我想完全控制我處理每個請求的控制器類型。
場景是:
例如:
category.website.com
被稱為category
,將使用通用的HomeController<T>
,使用 DI 注入類別,因此類型是HomeController<Category>
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.