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


Szolgáltatások bevezetése a célközönségek számára egy ASP.NET Core-alkalmazásban

Ebben az útmutatóban a célzási szűrővel fog létrehozni egy funkciót a ASP.NET Core-alkalmazás célközönségei számára. A célzási szűrővel kapcsolatos további információkért lásd : Szolgáltatások bevezetése a célközönségek számára.

Előfeltételek

Webalkalmazás létrehozása funkciójelölővel

Ebben a szakaszban egy webalkalmazást hoz létre, amely lehetővé teszi a felhasználók számára, hogy bejelentkezhessenek, és a korábban létrehozott bétafunkció-jelzőt használják.

  1. Hozzon létre egy webalkalmazást, amely a következő paranccsal hitelesít egy helyi adatbázison.

    dotnet new webapp --auth Individual -o TestFeatureFlags
    
  2. Lépjen az újonnan létrehozott TestFeatureFlags könyvtárra, és adjon hozzá hivatkozásokat a következő NuGet-csomagokhoz.

    dotnet add package Microsoft.Azure.AppConfiguration.AspNetCore
    dotnet add package Microsoft.FeatureManagement.AspNetCore
    dotnet add package Azure.Identity
    
  3. Hozzon létre egy felhasználói titkos kulcsot az alkalmazáshoz az alábbi parancsok futtatásával.

    A parancs a Secret Managerrel tárolja az alkalmazáskonfigurációs tároló végpontját tároló titkos Endpoints:AppConfigurationkulcsot. Cserélje le a <your-App-Configuration-endpoint> helyőrzőt az Alkalmazáskonfigurációs áruház végpontjára. A végpontot az Alkalmazáskonfigurációs áruház Áttekintés paneljén találja az Azure Portalon.

    dotnet user-secrets init
    dotnet user-secrets set Endpoints:AppConfiguration "<your-App-Configuration-endpoint>"
    
  4. Adja hozzá Azure-alkalmazás konfigurációt és szolgáltatáskezelést az alkalmazáshoz.

    1. Ezzel hitelesítheti magát DefaultAzureCredential az Alkalmazáskonfigurációs áruházban. Kövesse az utasításokat a hitelesítő adatok alkalmazáskonfigurációs adatolvasói szerepkör hozzárendeléséhez. Győződjön meg arról, hogy elegendő időt hagy az engedély propagálására az alkalmazás futtatása előtt.

    2. Frissítse a Program.cs fájlt a következő kóddal.

      // Existing code in Program.cs
      // ... ...
      
      using Azure.Identity;
      
      var builder = WebApplication.CreateBuilder(args);
      
      // Retrieve the endpoint
      string endpoint = builder.Configuration.GetValue<string>("Endpoints:AppConfiguration") 
          ?? throw new InvalidOperationException("The setting `Endpoints:AppConfiguration` was not found.");
      
      // Connect to Azure App Configuration and load all feature flags with no label
      builder.Configuration.AddAzureAppConfiguration(options =>
      {
          options.Connect(new Uri(endpoint), new DefaultAzureCredential())
                 .UseFeatureFlags();
      });
      
      // Add Azure App Configuration middleware to the container of services
      builder.Services.AddAzureAppConfiguration();
      
      // Add feature management to the container of services
      builder.Services.AddFeatureManagement();
      
      // The rest of existing code in Program.cs
      // ... ...
      
  5. Engedélyezze a konfiguráció és a funkciójelző frissítését Azure-alkalmazás Konfigurációból az Alkalmazáskonfiguráció köztes szoftverrel.

    Frissítse Program.cs a következő kóddal.

    // Existing code in Program.cs
    // ... ...
    
    var app = builder.Build();
    
    // Use Azure App Configuration middleware for dynamic configuration refresh
    app.UseAzureAppConfiguration();
    
    // The rest of existing code in Program.cs
    // ... ...
    
  6. Adjon hozzá egy új, Béta nevű üres Razor-lapot a Pages könyvtárban. Két fájlt tartalmaz Beta.cshtml és Beta.cshtml.cs.

    @page
    @model TestFeatureFlags.Pages.BetaModel
    @{
        ViewData["Title"] = "Beta Page";
    }
    
    <h1>This is the beta website.</h1>
    
  7. Nyissa meg Beta.cshtml.cs, és adja hozzá az FeatureGate attribútumot az BetaModel osztályhoz.

    using Microsoft.AspNetCore.Mvc.RazorPages;
    using Microsoft.FeatureManagement.Mvc;
    
    namespace TestFeatureFlags.Pages
    {
        [FeatureGate("Beta")]
        public class BetaModel : PageModel
        {
            public void OnGet()
            {
            }
        }
    }
    
  8. Nyissa meg a Pages/_ViewImports.cshtml fájlt, és regisztrálja a funkciókezelő címkekezelőjét egy @addTagHelper irányelv használatával.

    @addTagHelper *, Microsoft.FeatureManagement.AspNetCore
    
  9. Nyissa meg a _Layout.cshtml fájlt a Pages/Shared könyvtárban. Szúrjon be egy új <feature> címkét a Kezdőlap és az Adatvédelem navigációs sáv elemei közé az alábbi kiemelt sorokban látható módon.

    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
        <div class="container">
            <a class="navbar-brand" asp-area="" asp-page="/Index">TestAppConfigNet3</a>
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                    aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
                <ul class="navbar-nav flex-grow-1">
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
                    </li>
                    <feature name="Beta">
                        <li class="nav-item">
                            <a class="nav-link text-dark" asp-area="" asp-page="/Beta">Beta</a>
                        </li>
                    </feature>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
    

Célzás engedélyezése a webalkalmazáshoz

Célzási környezetre van szükség a célzással végzett funkcióértékeléshez. Paraméterként kifejezetten megadhatja az featureManager.IsEnabledAsync API-nak. A ASP.NET Core-ban a célkörnyezet a szolgáltatásgyűjteményen keresztül környezeti környezetként is biztosítható az ITargetingContextAccessor felület implementálásával.

Célzás Kontextus Hozzáférő

A célkörnyezet megadásához adja át a metódus implementálási ITargetingContextAccessorWithTargeting<T> típusát. Ha nincs megadva típus, a rendszer egy alapértelmezett implementációt használ, ahogyan az a következő kódrészletben is látható. Az alapértelmezett célkörnyezeti HttpContext.User.Identity.Name kiegészítő típusként és UserId típusként HttpContext.User.ClaimsRoleGroupsis használható. A DefaultHttpTargetingContextAccessor parancsra hivatkozva implementálhatja a sajátját, ha testreszabásra van szükség. A megvalósítással ITargetingContextAccessorkapcsolatos további információkért tekintse meg a célzás funkcióreferenciáját.

// Existing code in Program.cs
// ... ...

// Add feature management to the container of services
builder.Services.AddFeatureManagement()
                .WithTargeting();

// The rest of existing code in Program.cs
// ... ...

Célzási szűrő működés közben

  1. Hozza létre és futtassa az alkalmazást. Kezdetben a bétaelem nem jelenik meg az eszköztáron, mert az Alapértelmezett százalék beállítás értéke 0.

    A felhasználó nem jelentkezett be, és a bétaelem nem jelenik meg

  2. Új felhasználói fiók létrehozásához kattintson a jobb felső sarokban található Regisztráció hivatkozásra. Használja a következő e-mail-címét test@contoso.com: . A Regisztráció megerősítése képernyőn kattintson ide a fiók megerősítéséhez.

  3. Jelentkezzen be a test@contoso.comfiók regisztrálásakor beállított jelszóval.

    A bétaelem most megjelenik az eszköztáron, mert test@contoso.com célfelhasználóként van megadva.

    Bejelentkezett felhasználó és bétaelem

    Most jelentkezzen be a testuser@contoso.comfiók regisztrálásakor beállított jelszóval. A bétaelem nem jelenik meg az eszköztáron, mert testuser@contoso.com kizárt felhasználóként van megadva.

Következő lépések

A funkciószűrőkről a következő dokumentumokban olvashat bővebben.

A .NET szolgáltatásfelügyeleti kódtár teljes funkciólefutásához folytassa a következő dokumentumot.