إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذا الدليل، ستستخدم عامل تصفية الاستهداف لنشر ميزة للجماهير المستهدفة لتطبيق ASP.NET Core. لمزيد من المعلومات حول عامل تصفية الاستهداف، راجع طرح الميزات للجماهير المستهدفة.
المتطلبات الأساسية
- حساب Azure مع اشتراك نشط. أنشئ حسابًا مجانًا.
- متجر App Configuration، كما هو موضح في البرنامج التعليمي لإنشاء متجر.
- علامة ميزة مع عامل تصفية الاستهداف. إنشاء علامة الميزة.
- .NET SDK 6.0 أو أحدث.
إنشاء تطبيق ويب مع علامة ميزة
في هذا القسم، يمكنك إنشاء تطبيق ويب يسمح للمستخدمين بتسجيل الدخول واستخدام علامة ميزة Beta التي قمت بإنشائها من قبل.
إنشاء تطبيق ويب يصادق على قاعدة بيانات محلية باستخدام الأمر التالي.
dotnet new webapp --auth Individual -o TestFeatureFlagsانتقل إلى دليل TestFeatureFlags الذي تم إنشاؤه حديثا وأضف مراجع إلى حزم NuGet التالية.
dotnet add package Microsoft.Azure.AppConfiguration.AspNetCore dotnet add package Microsoft.FeatureManagement.AspNetCore dotnet add package Azure.Identityإنشاء سر مستخدم للتطبيق عن طريق تشغيل الأوامر التالية.
يستخدم الأمر Secret Manager لتخزين سر يسمى
Endpoints:AppConfiguration، والذي يخزن نقطة النهاية لمخزن App Configuration. استبدل<your-App-Configuration-endpoint>العنصر النائب بنقطة نهاية متجر App Configuration. يمكنك العثور على نقطة النهاية في شفرة نظرة عامة على متجر App Configuration في مدخل Microsoft Azure.dotnet user-secrets init dotnet user-secrets set Endpoints:AppConfiguration "<your-App-Configuration-endpoint>"إضافة تكوين تطبيق Azure وإدارة الميزات إلى التطبيق الخاص بك.
يمكنك استخدام
DefaultAzureCredentialللمصادقة على متجر App Configuration. اتبع الإرشادات لتعيين بيانات الاعتماد الخاصة بك دور قارئ بيانات تكوين التطبيق. تأكد من السماح بوقت كاف للإذن للنشر قبل تشغيل التطبيق الخاص بك.قم بتحديث ملف Program.cs بالتعليمات البرمجية التالية.
// 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 // ... ...
تمكين تحديث علامة الميزة والتكوين من Azure App Configuration باستخدام البرنامج الوسيط App Configuration.
تحديث Program.cs بالتعليمات البرمجية التالية.
// 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 // ... ...أضف صفحة Razor فارغة جديدة تسمى Beta ضمن دليل Pages. يتضمن ملفين Beta.cshtml و Beta.cshtml.cs.
@page @model TestFeatureFlags.Pages.BetaModel @{ ViewData["Title"] = "Beta Page"; } <h1>This is the beta website.</h1>افتح Beta.cshtml.cs، وأضف السمة
FeatureGateBetaModelإلى الفئة .using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.FeatureManagement.Mvc; namespace TestFeatureFlags.Pages { [FeatureGate("Beta")] public class BetaModel : PageModel { public void OnGet() { } } }افتح Pages/_ViewImports.cshtml، وسجل مدير الميزات Tag Helper باستخدام
@addTagHelperتوجيه.@addTagHelper *, Microsoft.FeatureManagement.AspNetCoreافتح _Layout.cshtml في الدليل Pages/Shared . أدخل علامة
<feature>جديدة بين عنصري شريط التنقل Home وPrivacy، كما هو موضح في الأسطر المميزة أدناه.<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>
تمكين الاستهداف لتطبيق الويب
مطلوب سياق استهداف لتقييم الميزات مع الاستهداف. يمكنك توفيره كمعلمة featureManager.IsEnabledAsync لواجهة برمجة التطبيقات بشكل صريح. في ASP.NET Core، يمكن أيضا توفير سياق الاستهداف من خلال مجموعة الخدمة كسياق محيط من خلال تنفيذ واجهة ITargetingContextAccessor .
استهداف ملحق السياق
لتوفير سياق الاستهداف، قم بتمرير نوع التنفيذ الخاص بك من ITargetingContextAccessor إلى WithTargeting<T> الأسلوب . إذا لم يتم توفير أي نوع، يتم استخدام تطبيق افتراضي، كما هو موضح في قصاصة التعليمات البرمجية التالية. يستخدم HttpContext.User.Identity.Name ملحق سياق الاستهداف الافتراضي ك UserId ونوع HttpContext.User.ClaimsRole ل Groups. يمكنك الرجوع إلى DefaultHttpTargetingContextAccessor لتنفيذ الخاص بك إذا كانت هناك حاجة إلى التخصيص. لمعرفة المزيد حول تنفيذ ITargetingContextAccessor، راجع مرجع الميزة للاستهداف.
// 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
// ... ...
إشعار
بالنسبة لتطبيقات Blazor، راجع إرشادات تمكين إدارة الميزات كخدمات محددة النطاق.
تصفية الاستهداف قيد التنفيذ
إنشاء التطبيق وتشغيله. مبدئيًا، لا يظهر عنصر إصدار بيتا على شريط الأدوات، لأنه تم تعيين خيار النسبة المئوية الافتراضية على 0.
حدد رابط Register في الزاوية العلوية اليسرى لإنشاء حساب مستخدم جديد. استخدم عنوان بريد إلكتروني لـ
test@contoso.com. في شاشة تأكيد التسجيل، حدد انقر هنا لتأكيد حسابك.سجل الدخول باسم
test@contoso.com، باستخدام كلمة المرور التي قمت بتعيينها عند تسجيل الحساب.يظهر عنصر بيتا الآن على شريط الأدوات، لأنه تم تحديد
test@contoso.comكمستخدم مستهدف.
سجل الدخول الآن باسم
testuser@contoso.com، باستخدام كلمة المرور التي قمت بتعيينها عند تسجيل الحساب. لا يظهر عنصر Beta على شريط الأدوات، لأنهtestuser@contoso.comمحدد كمستخدم مستبعد.
الخطوات التالية
لمعرفة المزيد حول عوامل تصفية الميزات، تابع إلى المستندات التالية.
للتشغيل الكامل للميزة لمكتبة إدارة ميزات .NET، تابع إلى المستند التالي.