【发布时间】:2020-05-08 06:22:21
【问题描述】:
我们的团队维护一个自托管的 ASP.NET Web API。该项目使用属性路由,我们有几十个现有的控制器。可以说,API 通过主路径 /api/purpose1/... 公开,所有现有的控制器都作为资源放置在下面。
现在我想介绍一个新的并行主路径,例如。 G。 /api/purpose2/。应该可以通过配置文件中的布尔变量相互独立地激活两个主路径。
由于所有控制器都在一个程序集中,因此属性路由方法总是会找到并将它们添加到purpose1 和purpose2。这与purpose1 和purpose2 的独立性相矛盾。所以我对purpose1 使用属性路由,对purpose2 使用基于约定的路由。这至少有效,但我对两种不同路由方法的混合不满意。
所以我的问题是:我可以禁用某些带有属性路由的控制器类吗?
【问题讨论】:
-
请检查IControllerActivator 和IControllerFactory 接口。实现这些可以让您完全控制控制器的创建。
-
或者您可以覆盖控制器的OnActionExecuting 方法来检查功能标志。
-
@PeterCsala 谢谢,我会看看这个。我必须实现这两个接口吗?
-
IControllerFactory 应该足够了。我举个例子。
-
您使用的是哪个 .net core 或 .net framework 版本?
标签: c# asp.net asp.net-web-api asp.net-routing