Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam panduan ini, Anda akan menggunakan filter penargetan untuk meluncurkan fitur ke audiens yang ditargetkan untuk aplikasi ASP.NET Core Anda. Untuk informasi selengkapnya tentang filter penargetan, lihat Meluncurkan fitur ke audiens yang ditargetkan.
Prasyarat
- Akun Azure dengan langganan aktif. Buat akun gratis.
- Penyimpanan App Configuration, seperti yang ditunjukkan dalam tutorial untuk membuat penyimpanan.
- Bendera fitur dengan filter penargetan. Buat bendera fitur.
- .NET SDK 6.0 atau yang lebih baru.
Membuat aplikasi web dengan bendera fitur
Di bagian ini, Anda membuat aplikasi web yang memungkinkan pengguna untuk masuk dan menggunakan bendera fitur Beta yang Anda buat sebelumnya.
Buat aplikasi web yang mengautentikasi terhadap database lokal menggunakan perintah berikut.
dotnet new webapp --auth Individual -o TestFeatureFlagsNavigasi ke direktori TestFeatureFlags yang baru dibuat dan tambahkan referensi ke paket NuGet berikut.
dotnet add package Microsoft.Azure.AppConfiguration.AspNetCore dotnet add package Microsoft.FeatureManagement.AspNetCore dotnet add package Azure.IdentityBuat rahasia pengguna untuk aplikasi dengan menjalankan perintah berikut.
Perintah menggunakan Secret Manager untuk menyimpan rahasia bernama
Endpoints:AppConfiguration, yang menyimpan titik akhir untuk penyimpanan App Configuration Anda.<your-App-Configuration-endpoint>Ganti tempat penampung dengan titik akhir penyimpanan App Configuration Anda. Anda dapat menemukan titik akhir di bilah Gambaran Umum penyimpanan App Configuration di portal Azure.dotnet user-secrets init dotnet user-secrets set Endpoints:AppConfiguration "<your-App-Configuration-endpoint>"Tambahkan Azure App Configuration dan manajemen fitur ke aplikasi Anda.
Anda menggunakan
DefaultAzureCredentialuntuk mengautentikasi ke penyimpanan App Configuration Anda. Ikuti instruksi untuk menetapkan kredensial Anda peran Pembaca Data App Configuration. Pastikan untuk mengizinkan waktu yang memadai agar izin disebarluaskan sebelum menjalankan aplikasi Anda.Perbarui file Program.cs dengan kode berikut.
// 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 // ... ...
Aktifkan refresh bendera konfigurasi dan fitur dari Azure App Configuration dengan middleware App Configuration.
Perbarui Program.cs dengan kode berikut.
// 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 // ... ...Tambahkan halaman Razor kosong baru bernama Beta di bawah direktori Pages. Ini termasuk dua file Beta.cshtml dan Beta.cshtml.cs.
@page @model TestFeatureFlags.Pages.BetaModel @{ ViewData["Title"] = "Beta Page"; } <h1>This is the beta website.</h1>Buka Beta.cshtml.cs, dan tambahkan
FeatureGateatribut keBetaModelkelas .using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.FeatureManagement.Mvc; namespace TestFeatureFlags.Pages { [FeatureGate("Beta")] public class BetaModel : PageModel { public void OnGet() { } } }Buka Pages/_ViewImports.cshtml, dan daftarkan Pengelola fitur Tag Helper menggunakan arahan
@addTagHelper.@addTagHelper *, Microsoft.FeatureManagement.AspNetCoreBuka _Layout.cshtml di direktori Pages/Shared . Sisipkan tag baru
<feature>di antara item bilah navigasi Beranda dan Privasi, seperti yang diperlihatkan di baris berikut ini.<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>
Mengaktifkan penargetan untuk aplikasi web
Konteks penargetan diperlukan untuk evaluasi fitur dengan penargetan. Anda dapat menyediakannya sebagai parameter untuk featureManager.IsEnabledAsync API secara eksplisit. Dalam ASP.NET Core, konteks penargetan juga dapat disediakan melalui koleksi layanan sebagai konteks sekitar dengan menerapkan antarmuka ITargetingContextAccessor .
Penargetan Aksesor Konteks
Untuk memberikan konteks penargetan, teruskan jenis ITargetingContextAccessor implementasi Anda ke WithTargeting<T> metode . Jika tidak ada jenis yang disediakan, implementasi default digunakan, seperti yang ditunjukkan dalam cuplikan kode berikut. Pengakses HttpContext.User.Identity.Name konteks penargetan default menggunakan sebagai UserId dan HttpContext.User.Claims dari jenis Role untuk Groups. Anda dapat mereferensikan DefaultHttpTargetingContextAccessor untuk mengimplementasikan sendiri jika kustomisasi diperlukan. Untuk mempelajari selengkapnya tentang menerapkan ITargetingContextAccessor, lihat referensi fitur untuk penargetan.
// 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
// ... ...
Catatan
Untuk aplikasi Blazor, lihat instruksi untuk mengaktifkan manajemen fitur sebagai layanan tercakup.
Menargetkan filter dalam tindakan
Membuat dan menjalankan aplikasi. Awalnya, item Beta tidak muncul di toolbar, karena opsi Persentase default diatur ke 0.
Pilih tautan Daftar di sudut kanan atas untuk membuat akun pengguna baru. Atau gunakan alamat email
test@contoso.com. Pada layar Konfirmasi Pendaftaran, pilih Klik di sini untuk mengonfirmasi akun Anda.Masuk sebagai
test@contoso.com, menggunakan kata sandi yang Anda tetapkan saat mendaftarkan akun.Item Beta sekarang muncul pada toolbar, karena
test@contoso.comditentukan sebagai pengguna yang ditargetkan.
Sekarang masuk sebagai
testuser@contoso.com, menggunakan kata sandi yang Anda tetapkan saat mendaftarkan akun. Item Beta tidak muncul di toolbar, karenatestuser@contoso.comditentukan sebagai pengguna yang dikecualikan.
Langkah berikutnya
Untuk mempelajari selengkapnya tentang filter fitur, lanjutkan ke dokumen berikut.
Untuk rundown fitur lengkap pustaka manajemen fitur .NET, lanjutkan ke dokumen berikut.