TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.77K subscribers
Post #2004 1.47K
День 1652. #ЗаметкиНаПолях
Флаги функций в
ASP.NET Core. Продолжение
Начало

2. Фильтр по времени
Если мы хотим, чтобы функция была включена только в течение определённого временного окна, используем TimeWindowFilter.
Сначала зарегистрируем фильтр:
builder.Services.AddFeatureManagement()
.AddFeatureFilter<TimeWindowFilter>();

В appsettings.json, определим конфигурацию:
"FeatureManagement": {
// …
"TimeFeature": {
"EnabledFor": [
{
"Name": "TimeWindow",
"Parameters": {
"Start": "2023-08-09T09:00:00+03:00",
"End": "2023-08-24T11:00:00+03:00"
}
}
]
}
}
Функция TimeFeature будет включена с 09:00 (Мск) 09.08.2023 до 11:00 (Мск) 24.08.2023. Проверка работы функции аналогична логическому фильтру.

3. Процентный фильтр
Аналогично фильтру по времени, нужно добавить его в сервисы:
 ….AddFeatureFilter<PercentageFilter>();
И в appsettings.json:
"FeatureManagement": {
"PercentFeature": {
"EnabledFor": [
{
"Name": "Percentage",
"Parameters": {
"Value": 50
}
}
]
}
}
Эта функция будет «включена» в 50% случаев.

4. Фильтр таргетинга
Фильтры таргетинга позволяют включить функцию для определённых пользователей или групп. Как обычно, нам нужно зарегистрировать фильтр таргетинга:
….AddFeatureFilter<TargetingFilter>();
И добавить настройку в appsettings.json:
"FeatureManagement": {
"TargetFeature": {
"EnabledFor": [
{
"Name": "Targeting",
"Parameters": {
"Audience": {
"Users": [],
"Groups": [
{
"Name": "Beta Testers",
"RolloutPercentage": 20
}
]
}
}
}
]
}
}
Здесь функция TargetFeature будет доступна для 20% пользователей из группы "Beta Testers". В Users можно задать список Id отдельных пользователей.

Также мы должны добавить логику определения аудитории. Для этого нужно создать сервис реализующий интерфейс ITargetingContextAccessor и зарегистрировать его в DI.
Интерфейс содержит один метод GetContextAsync(), возвращающий ValueTask<TargetingContext>. TargetingContext, в свою очередь, содержит свойства:
- UserId (строка) – сопоставляется со списком Users в appsettings,
- Groups (коллекция строк) – сопоставляется со списком Groups.
Для определения Id или группы для текущего пользователя, в сервис, реализующий ITargetingContextAccessor, можно внедрить IHttpContextAccessor (об этом завтра).

Продолжение следует…

Источник:
https://code-maze.com/aspnetcore-feature-flags/
  • 👍 8
More from @netdeveloperdiary
  1. Oct 10, 2026День 2810. #ЧтоНовенького #VSCode Более Быстрый и Лёгкий C# Dev Kit Мы, разработчики, люби…
  2. Oct 9, 2026День 2809. #Карьера 5 Навыков, Которые Помогут Быстрее Стать Сеньором. Окончание Начало 3.…
  3. Oct 8, 2026День 2808. #Карьера 5 Навыков, Которые Помогут Быстрее Стать Сеньором. Начало В ИТ есть се…
  4. Oct 7, 2026День 2807. #ЗаметкиНаПолях Типы Коллекций в .NET, Которые Стоит Попробовать. Окончание Нач…
  5. Oct 6, 2026🦈 Открытое собеседование на Middle C# | 6 октября, 19:00 МСК Приглашаем на открытое собес…
  6. Oct 6, 2026День 2806. #ЗаметкиНаПолях Типы Коллекций в .NET, Которые Стоит Попробовать. Начало Больши…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →