Я использую ASP. NET Core 3.1 для моего веб-API. У меня есть несколько контроллеров, использующих маршрутизацию на основе атрибутов, и все хорошо.
Мы хотим иметь возможность переключать один или несколько контроллеров с флагами функций в конфигурации приложения. В идеале, если флаг не установлен, соответствующий контроллер должен перестать существовать в глазах API. Я пытаюсь найти лучший (или любой) способ сделать это.
По-видимому, не существует встроенного способа настройки того, какие контроллеры сканируются при использовании атрибутной маршрутизации, и нет способа изменить коллекцию контроллеров или конечных точек, найденных при маршрутизации. Вот фрагмент кода Startup.cs, о котором идет речь:
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
app.UseRouting();
app.UseEndpoints(e =>
{
if (!this.FeatureEnabled)
{
// DO SOMETHING?
}
e.MapControllers();
});
}
Я понимаю, что, вероятно, могу переключиться на более ручную рукописную маршрутизацию и указать каждый контроллер, действие и параметр в классе Startup, но я бы хотел скорее отказаться от этого требования флага функции, чем go по этому грязному пути.
Есть ли способ выбрать, какие контроллеры используются в API при использовании маршрутизации на основе атрибутов?