Megosztás a következőn keresztül:


Feltételes szolgáltatások engedélyezése egyéni szűrővel egy ASP.NET Core-alkalmazásban

A funkciójelzők funkciószűrőkkel feltételesen engedélyezhetik a funkciókat. A funkciószűrőkkel kapcsolatos további információkért lásd: Feltételes szolgáltatások engedélyezése funkciószűrőkkel.

Ez az útmutató bemutatja, hogyan implementálhat egyéni funkciószűrőt egy ASP.NET Core-alkalmazásban, és hogyan használhatja a funkciószűrőt a szolgáltatások feltételes engedélyezéséhez.

Előfeltételek

  • Az ASP.NET Core-alkalmazás, amely bétaverziós funkciójelzővel rendelkezik, és amelyet létrehoz a Quickstart útmutató lépéseinek végrehajtásával: Funkciójelölők hozzáadása egy ASP.NET Core-alkalmazáshoz. Ez az útmutató erre a szolgáltatásfelügyeleti rövid útmutatóra épül.
  • A Random egyéni szolgáltatásszűrő hozzáadva az Azure App Configuration Store szolgáltatásokhoz tartozó Béta jelzőjéhez. Útmutatásért lásd: Egyéni funkciószűrő hozzáadása.

Egyéni funkciószűrő implementálása

Az App Configuration áruházban a Beta funkciójelző egy egyéni funkciószűrővel rendelkezik Random. Ennek a szűrőnek van egy Percentage paramétere. A funkciószűrő implementálásához a paraméter által meghatározott lehetőség alapján engedélyezi a Percentage funkciójelzőjét.

  1. Nyissa meg a ASP.NET Core-alkalmazásprojektet tartalmazó mappát az Előfeltételek listában felsorolt szolgáltatásfelügyeleti rövid útmutatóból.

  2. Adjon hozzá egy RandomFilter.cs fájlt, amely a következő kódot tartalmazza:

    using Microsoft.FeatureManagement;
    
    namespace TestAppConfig
    {
        [FilterAlias("Random")]
        public class RandomFilter : IFeatureFilter
        {
            private readonly Random _random;
    
            public RandomFilter()
            {
                _random = new Random();
            }
    
            public Task<bool> EvaluateAsync(FeatureFilterEvaluationContext context)
            {
                int percentage = context.Parameters.GetSection("Percentage").Get<int>();
    
                int randomNumber = _random.Next(100);
    
                return Task.FromResult(randomNumber <= percentage);
            }
        }
    }
    

    A RandomFilter osztály a fenti kódban implementálja a IFeatureFilter interfészt a Microsoft.FeatureManagement könyvtárból. Az IFeatureFilter interfésznek egyetlen metódusa van, EvaluateAsyncamelyet a rendszer a funkciójelző kiértékelésekor hív meg. A EvaluateAsyncfunkciószűrők a visszatéréssel engedélyezik a funkciójelzőt true.

    Ebben a kódban a RandomFilter osztályt FilterAliasAttribute-mal dekorálják, amely megadja a szűrő aliasát Random. Ez az alias megegyezik az Alkalmazáskonfiguráció bétafunkció-jelölőjének szűrőnevével.

  3. Nyissa meg a Program.cs fájlt. Regisztráljon RandomFilter úgy, hogy hozzáad egy hívást a AddFeatureFilter metódushoz, ahogy az a következő kódban is látható:

    // Existing code in Program.cs
    // ... ...
    
    // Add feature management to the container of services.
    builder.Services.AddFeatureManagement()
                    .AddFeatureFilter<RandomFilter>();
    
    // The rest of the existing code in Program.cs
    // ... ...
    

A funkciószűrő alkalmazása

  1. Hozza létre az alkalmazást a dotnet build parancs használatával. Ezután futtassa a dotnet run segítségével.

  2. A parancs kimenetében keresse meg a dotnet run webalkalmazás által figyelt URL-címet. Nyisson meg egy böngészőt, és nyissa meg az URL-címet.

  3. Frissítse a böngészőt néhányszor. A Béta menü néha megjelenik a weblapon, és néha nem. A bétaverzió funkciójelzője nincs manuálisan be- és kikapcsolva. A variációt az a véletlenszerű szám okozza, amelyet a rendszer a RandomFilterEvaluateAsync funkciójelző kiértékelésekor generál.

    Képernyőkép a localhost:7207 böngészőről. A lapon lévő szöveg az Azure App Configuration adatainak állapotát tartalmazza. Nem látható bétamenü.

    Képernyőkép a localhost:7207 böngészőről. A lapon lévő szöveg az Azure App Configuration adatainak állapotát tartalmazza. A bétamenü ki van emelve.

Következő lépések

A beépített funkciószűrőkről a következő dokumentumokban olvashat bővebben:

A .NET funkciókezelési könyvtár teljes funkciók áttekintéséhez folytassa a következő dokumentummal: