我的 Web API 使用 ASP.NET Core 3.1。我有多个控制器都使用基于属性的路由,一切都很好。
我们希望能够在应用程序配置中切换一个或多个带有功能标志的控制器。理想情况下,如果未设置标志,则相应的控制器在 API 眼中应该不复存在。我正在努力想出最好的(或任何)方法来做到这一点。
在使用属性路由时,似乎没有配置扫描哪些控制器的内置方法,也无法修改路由找到的控制器或端点的集合。这是有问题的 Startup.cs 片段:
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
app.UseRouting();
app.UseEndpoints(e =>
{
if (!this.FeatureEnabled)
{
// DO SOMETHING?
}
e.MapControllers();
});
}
Run Code Online (Sandbox Code Playgroud)
我意识到我可以切换到更手动的手写路由并在 Startup 类中指定每个控制器、动作和参数,但我宁愿放弃这个功能标志要求,也不愿走那条凌乱的道路。
使用基于属性的路由时,有什么方法可以选择 API 中使用哪些控制器?