Rövid útmutató: Funkciójelzők hozzáadása egy ASP.NET Core-alkalmazáshoz

Ebben a rövid útmutatóban létrehoz egy funkciójelzőt Azure-alkalmazás Konfigurációban, és segítségével dinamikusan szabályozhatja egy új weblap elérhetőségét egy ASP.NET Core-alkalmazásban anélkül, hogy újraindítaná vagy újra üzembe helyezi.

A szolgáltatásfelügyeleti támogatás kibővíti az alkalmazáskonfiguráció dinamikus konfigurációs funkcióját. Az ebben a rövid útmutatóban szereplő példa a dinamikus konfigurációs oktatóanyagban bemutatott ASP.NET Core-alkalmazásra épül. A folytatás előtt fejezze be a rövid útmutatót és az oktatóanyagot egy dinamikus konfigurációval rendelkező ASP.NET Core-alkalmazás létrehozásához.

Előfeltételek

Kövesse a dokumentumokat egy dinamikus konfigurációjú ASP.NET Core-alkalmazás létrehozásához.

Funkciójelző létrehozása

Adjon hozzá egy bétaverzió nevű funkciójelzőt az Alkalmazáskonfigurációs áruházhoz, és hagyja meg a címkét és a leírást az alapértelmezett értékekkel. Ha többet szeretne tudni arról, hogyan adhat hozzá funkciójelzőket egy áruházhoz az Azure Portal vagy a parancssori felület használatával, lépjen a Funkciójelölő létrehozása elemre.

Bétaverzió nevű funkciójelző engedélyezése

Funkciójelző használata

  1. Lépjen a projekt könyvtárába, és futtassa a következő parancsot a Microsoft.FeatureManagement.AspNetCore NuGet-csomagra mutató hivatkozás hozzáadásához.

    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. Nyissa meg a Program.cs, és adjon hozzá egy hívást a UseFeatureFlags metódushoz a AddAzureAppConfiguration híváson belül.

    // Load configuration from Azure App Configuration
    builder.Configuration.AddAzureAppConfiguration(options =>
    {
        options.Connect(connectionString)
               // Load all keys that start with `TestApp:` and have no label
               .Select("TestApp:*", LabelFilter.Null)
               // Configure to reload configuration if the registered sentinel key is modified
               .ConfigureRefresh(refreshOptions =>
                    refreshOptions.Register("TestApp:Settings:Sentinel", refreshAll: true));
    
        // Load all feature flags with no label
        options.UseFeatureFlags();
    });
    

    Tipp.

    Ha nem ad át paramétert a UseFeatureFlags metódusnak, az az alkalmazáskonfigurációs áruházban címke nélkül tölti be az összes funkciójelzőt. A funkciójelölők alapértelmezett frissítési időköze 30 másodperc. Ezt a viselkedést a FeatureFlagOptions paraméteren keresztül szabhatja testre. A következő kódrészlet például csak a TestApptal kezdődő funkciójelölőket tölti be: a kulcsnevüket, és a címke fejlesztőivel rendelkeznek. A kód a frissítési időközt is 5 percre módosítja. Vegye figyelembe, hogy ez a frissítési időköz eltér a normál kulcsértékek időtartamától.

    options.UseFeatureFlags(featureFlagOptions =>
    {
        featureFlagOptions.Select("TestApp:*", "dev");
        featureFlagOptions.CacheExpirationInterval = TimeSpan.FromMinutes(5);
    });
    
  3. Szolgáltatásfelügyelet hozzáadása az alkalmazás szolgáltatásgyűjteményéhez hívással AddFeatureManagement.

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

    // Existing code in Program.cs
    // ... ...
    
    builder.Services.AddRazorPages();
    
    // Add Azure App Configuration middleware to the container of services.
    builder.Services.AddAzureAppConfiguration();
    
    // Add feature management to the container of services.
    builder.Services.AddFeatureManagement();
    
    // Bind configuration "TestApp:Settings" section to the Settings object
    builder.Services.Configure<Settings>(builder.Configuration.GetSection("TestApp:Settings"));
    
    var app = builder.Build();
    
    // The rest of existing code in program.cs
    // ... ...
    

    Ha nincs jelen, adja hozzá using Microsoft.FeatureManagement; a fájl tetején.

  4. 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.

    Nyissa meg a Beta.cshtml fájlt, és frissítse a következő korrektúrával:

    @page
    @model TestAppConfig.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 az BetaModel osztályhoz. Az FeatureGate attribútum biztosítja, hogy a bétaoldal csak akkor legyen elérhető, ha a bétaverzió funkciójelzője engedélyezve van. Ha a bétaverzió funkciójelzője nincs engedélyezve, a lap a 404 Nem található értéket adja vissza.

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

    @addTagHelper *, Microsoft.FeatureManagement.AspNetCore
    

    Az előző kód lehetővé teszi a <feature> címkesegítő használatát a projekt .cshtml fájljaiban.

  6. Nyissa meg a _Layout.cshtml fájlt a Megosztott lapok\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>
    

    A <feature> címke biztosítja, hogy a Béta menüelem csak akkor jelenjen meg, ha a bétaverzió funkciójelzője engedélyezve van.

Az alkalmazás helyi létrehozása és futtatása

  1. Ha az alkalmazást a .NET Core parancssori felülettel szeretné létrehozni, futtassa a következő parancsot a parancshéjban:

    dotnet build
    
  2. A build sikeres befejezése után futtassa a következő parancsot a webalkalmazás helyi futtatásához:

    dotnet run
    
  3. Nyisson meg egy böngészőablakot, és nyissa meg a kimenetben dotnet run látható URL-címet. A böngészőnek az alábbi képhez hasonló oldalt kell megjelenítenie.

    Funkciójelző engedélyezés előtt

  4. Jelentkezzen be az Azure Portalra. Válassza a Minden erőforrás lehetőséget, és válassza ki a korábban létrehozott Alkalmazáskonfigurációs áruházat.

  5. Válassza a Funkciókezelőt, és keresse meg a bétafunkció-jelzőt. Engedélyezze a jelölőt az Engedélyezve jelölőnégyzet bejelölésével.

  6. Frissítse a böngészőt néhányszor. Amikor a frissítési időköz időablaka eltelik, a lap frissült tartalommal jelenik meg.

    Funkciójelző az engedélyezés után

  7. Válassza a Béta menüt. Ezzel elérhetővé válik a dinamikusan engedélyezett bétaverziós webhely.

    Funkciójelző bétaoldala

Az erőforrások eltávolítása

Ha nem szeretné folytatni a cikkben létrehozott erőforrások használatát, törölje az itt létrehozott erőforráscsoportot a díjak elkerülése érdekében.

Fontos

Az erőforráscsoport törlése nem vonható vissza. Az erőforráscsoport és a benne lévő összes erőforrás véglegesen törlődik. Győződjön meg arról, hogy nem véletlenül törli a rossz erőforráscsoportot vagy erőforrásokat. Ha a cikk erőforrásait olyan erőforráscsoporton belül hozta létre, amely más megtartani kívánt erőforrásokat tartalmaz, törölje az egyes erőforrásokat a megfelelő panelről az erőforráscsoport törlése helyett.

  1. Jelentkezzen be az Azure Portalra, és válassza ki az Erőforráscsoportokat.
  2. A Szűrés név szerint mezőbe írja be az erőforráscsoport nevét.
  3. Az eredménylistában válassza ki az erőforráscsoport nevét az áttekintés megtekintéséhez.
  4. Válassza az Erőforráscsoport törlése elemet.
  5. A rendszer az erőforráscsoport törlésének megerősítését kéri. Adja meg a megerősítéshez az erőforráscsoport nevét, és válassza a Törlés lehetőséget.

Néhány pillanat múlva az erőforráscsoport és annak összes erőforrása törlődik.

Következő lépések

Ebben a rövid útmutatóban funkciófelügyeleti képességet adott hozzá egy ASP.NET Core-alkalmazáshoz a dinamikus konfiguráción felül. A Microsoft.FeatureManagement.AspNetCore kódtár gazdag integrációt kínál ASP.NET Core-alkalmazásokhoz, beleértve az MVC-vezérlőműveletek, razorlapok, nézetek, útvonalak és köztes szoftverek funkciókezelését. További információkért tekintse meg az alábbi oktatóanyagot.

Bár a funkciójelölő lehetővé teszi a funkciók aktiválását vagy inaktiválását az alkalmazásban, érdemes lehet testre szabni egy funkciójelzőt az alkalmazás logikája alapján. A funkciószűrők lehetővé teszik a funkciójelző feltételes engedélyezését. További információkért tekintse meg az alábbi oktatóanyagot.

Azure-alkalmazás Konfiguráció beépített funkciószűrőket kínál, amelyek lehetővé teszik a funkciójelző aktiválását csak egy adott időszakban vagy az alkalmazás egy meghatározott célközönsége számára. További információkért tekintse meg az alábbi oktatóanyagot.

Ha más típusú alkalmazások szolgáltatásfelügyeleti funkcióját szeretné engedélyezni, folytassa az alábbi oktatóanyagokkal.

Ha többet szeretne megtudni a funkciójelzők Azure-alkalmazás Konfigurációban való kezeléséről, folytassa a következő oktatóanyagban.