Oktatóanyag: Szolgáltatások bevezetése a célközönségek számára egy ASP.NET Core-alkalmazásban
Ebben az oktatóanyagban a célzási szűrővel fog létrehozni egy funkciót a ASP.NET Core-alkalmazás célközönségének. 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
- Egy Azure-fiók, aktív előfizetéssel. Hozzon létre egyet ingyen.
- Alkalmazáskonfigurációs áruház. Hozzon létre egy áruházat.
- A célzási szűrővel rendelkező funkciójelző. Hozza létre a funkciójelzőt.
- .NET SDK 6.0 vagy újabb.
Webalkalmazás létrehozása funkciójelölővel
Ebben a szakaszban egy webalkalmazást fog létrehozni, 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.
Hozzon létre egy webalkalmazást, amely a következő paranccsal hitelesít egy helyi adatbázison.
dotnet new webapp --auth Individual -o TestFeatureFlags
Adjon hozzá hivatkozásokat a következő NuGet-csomagokhoz.
dotnet add package Microsoft.Azure.AppConfiguration.AspNetCore dotnet add package Microsoft.FeatureManagement.AspNetCore
Tárolja az alkalmazáskonfigurációs áruház kapcsolati sztring.
dotnet user-secrets init dotnet user-secrets set ConnectionStrings:AppConfig "<your_connection_string>"
Adja hozzá Azure-alkalmazás konfigurációt és szolgáltatáskezelést az alkalmazáshoz.
Frissítse a Program.cs fájlt a következő kóddal.
// Existing code in Program.cs // ... ... var builder = WebApplication.CreateBuilder(args); // Retrieve the App Config connection string string AppConfigConnectionString = builder.Configuration.GetConnectionString("AppConfig") ?? throw new InvalidOperationException("Connection string 'AppConfig' not found."); ; // Load feature flag configuration from Azure App Configuration builder.Configuration.AddAzureAppConfiguration(options => { options.Connect(AppConfigConnectionString); options.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 // ... ...
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 // ... ...
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>
Nyissa meg a Beta.cshtml.cs, és adjon hozzá
FeatureGate
attribútumot azBetaModel
osztályhoz.using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.FeatureManagement.Mvc; namespace TestFeatureFlags.Pages { [FeatureGate("Beta")] public class BetaModel : PageModel { public void OnGet() { } } }
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
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
A célzási szűrő kiértékeli a felhasználó szolgáltatásállapotát a felhasználó célkörnyezete alapján, amely a felhasználó azonosítóját és a felhasználóhoz tartozó csoportokat foglalja magában. Ebben a példában a bejelentkezett felhasználó e-mail-címét használja felhasználói azonosítóként, csoportként pedig az e-mail-cím tartománynevét.
Adjon hozzá egy ExampleTargetingContextAccessor.cs fájlt az alábbi kóddal. A felületet úgy
ITargetingContextAccessor
implementálhatja, hogy az aktuális kérés bejelentkezett felhasználójának megcélzási környezetet biztosítson.using Microsoft.FeatureManagement.FeatureFilters; namespace TestFeatureFlags { public class ExampleTargetingContextAccessor : ITargetingContextAccessor { private const string TargetingContextLookup = "ExampleTargetingContextAccessor.TargetingContext"; private readonly IHttpContextAccessor _httpContextAccessor; public ExampleTargetingContextAccessor(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor)); } public ValueTask<TargetingContext> GetContextAsync() { HttpContext httpContext = _httpContextAccessor.HttpContext; if (httpContext.Items.TryGetValue(TargetingContextLookup, out object value)) { return new ValueTask<TargetingContext>((TargetingContext)value); } List<string> groups = new List<string>(); if (httpContext.User.Identity.Name != null) { groups.Add(httpContext.User.Identity.Name.Split("@", StringSplitOptions.None)[1]); } TargetingContext targetingContext = new TargetingContext { UserId = httpContext.User.Identity.Name, Groups = groups }; httpContext.Items[TargetingContextLookup] = targetingContext; return new ValueTask<TargetingContext>(targetingContext); } } }
Nyissa meg a Program.cs fájlt, és engedélyezze a célzási szűrőt a
WithTargeting
metódus meghívásával. Adja meg azt a típustExampleTargetingContextAccessor
, amellyel a célzási szűrő lekérheti a célzási környezetet a funkciójelző kiértékelése során. Adja hozzáHttpContextAccessor
a szolgáltatásgyűjteményhez, hogyExampleTargetingContextAccessor
hozzáférhessen a bejelentkezett felhasználói adatokhoz aHttpContext
.// Existing code in Program.cs // ... ... // Add feature management to the container of services builder.Services.AddFeatureManagement() .WithTargeting<ExampleTargetingContextAccessor>(); // Add HttpContextAccessor to the container of services. builder.Services.AddHttpContextAccessor(); // The rest of existing code in Program.cs // ... ...
Feljegyzés
A Blazor-alkalmazások esetében tekintse meg a funkciókezelés hatókörön belüli szolgáltatásokként való engedélyezésére vonatkozó utasításokat .
Célzási szűrő működés közben
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.
Ú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.Jelentkezzen be a
test@contoso.com
fió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.Most jelentkezzen be a
testuser@contoso.com
fiók regisztrálásakor beállított jelszóval. A bétaelem nem jelenik meg az eszköztáron, merttestuser@contoso.com
kizárt felhasználóként van megadva.A csoportbeállítások viselkedésének megtekintéséhez további felhasználókat
@contoso.com
és@contoso-xyz.com
e-mail-címeket hozhat létre.Az e-mail-címmel rendelkező
contoso-xyz.com
felhasználók nem fogják látni a bétaelemet . Míg az e-mail-címmel rendelkező@contoso.com
felhasználók 50%-a látni fogja a Béta elemet, a többi 50% nem fogja látni a bétaelemet .
Következő lépések
A funkciószűrőkkel kapcsolatos további információkért folytassa az alábbi oktatóanyagokkal.
A .NET szolgáltatásfelügyeleti kódtár teljes funkciólefutásához folytassa a következő dokumentumot.