Aracılığıyla paylaş


ASP.NET Core uygulamasında özel filtreyle koşullu özellikleri etkinleştirme

Özellik bayrakları, özellikleri koşullu olarak etkinleştirmek için özellik filtrelerini kullanabilir. Özellik filtreleri hakkında daha fazla bilgi için bkz . Özellik filtreleri ile koşullu özellikleri etkinleştirme.

Bu kılavuz, ASP.NET Core uygulamasında özel özellik filtresi uygulamayı ve özellikleri koşullu olarak etkinleştirmek için özellik filtresini kullanmayı gösterir.

Önkoşullar

  • Hızlı Başlangıç: ASP.NET Core uygulamasına özellik bayrakları ekleme adımlarını tamamladığınızda oluşturduğunuz Beta özellik bayrağına sahip ASP.NET Core uygulaması. Bu kılavuz, özellik yönetimi hızlı başlangıç kılavuzunu temel alır.
  • Adlı özel özellik filtresi Random, Azure Uygulama Yapılandırma deponuzda beta özellik bayrağına eklenir. Yönergeler için bkz. Özel özellik filtresi ekleme.

Özel özellik filtresi uygulama

Uygulama Yapılandırma deponuzda Beta özellik bayrağı, adlı özel bir özellik filtresine sahiptir. Bu filtrenin bir Percentage parametresi vardır. Özellik filtresini uygulamak için, parametresi tarafından tanımlanan şansa göre Beta özellik bayrağını Percentage etkinleştirirsiniz.

  1. Önkoşullar'da listelenen özellik yönetimi hızlı başlangıcından ASP.NET Core uygulama projesini içeren klasöre gidin.

  2. Aşağıdaki kodu içeren bir RandomFilter.cs dosyası ekleyin:

    using Microsoft.FeatureManagement;
    
    namespace TestAppConfig
    {
        [FilterAlias("Random")]
        public class RandomFilter : IFeatureFilter
        {
            private readonly Random _random;
    
            public RandomFilter()
            {
                _random = new Random();
            }
    
            public Task<bool> EvaluateAsync(FeatureFilterEvaluationContext context)
            {
                int percentage = context.Parameters.GetSection("Percentage").Get<int>();
    
                int randomNumber = _random.Next(100);
    
                return Task.FromResult(randomNumber <= percentage);
            }
        }
    }
    

    Yukarıdaki kodda RandomFilter kitaplığından IFeatureFilter arabirimini uygulayan Microsoft.FeatureManagement sınıfı bulunur. Arabirim IFeatureFilter , bir özellik bayrağı her değerlendirildiğinde çağrılan adlı EvaluateAsynctek bir yönteme sahiptir. içinde EvaluateAsync, bir özellik filtresi döndürerek trueözellik bayrağını etkinleştirir.

    Bu kodda, RandomFilter sınıfı FilterAliasAttribute ile dekore edilerek filtrenize Random takma adını verir. Bu diğer ad, Uygulama Yapılandırması'ndaki Beta özellik bayrağındaki filtre adıyla eşleşir.

  3. Program.cs dosyasını açın. Belirtilen kodda gösterildiği gibi RandomFilter yöntemine bir çağrı ekleyerek AddFeatureFilter kaydolun.

    // Existing code in Program.cs
    // ... ...
    
    // Add feature management to the container of services.
    builder.Services.AddFeatureManagement()
                    .AddFeatureFilter<RandomFilter>();
    
    // The rest of the existing code in Program.cs
    // ... ...
    

Özellik filtresini uygulama

  1. komutunu kullanarak dotnet build uygulamanızı oluşturun. Ardından komutunu kullanarak dotnet run çalıştırın.

  2. dotnet run komutunun çıktısında, web uygulamasının dinlemekte olduğu bir URL bulun. Bir tarayıcı açın ve bu URL'ye gidin.

  3. Tarayıcıyı birkaç kez yenileyin. Beta menüsü bazen web sayfasında görünür, bazen görüntülenmez. Beta özellik bayrağı el ile açılıp kapatılmıyor. Varyasyon, özellik bayrağı değerlendirildiğinde uygulamasının RandomFilterEvaluateAsync oluşturduğu rastgele sayıdan kaynaklanır.

    localhost:7207'ye açık bir tarayıcının ekran görüntüsü. Sayfadaki metinde Azure Uygulama Yapılandırması'ndan veriler gösterilir. Beta menüsü görünmüyor.

    localhost:7207'ye açık bir tarayıcının ekran görüntüsü. Sayfadaki metinde Azure Uygulama Yapılandırması'ndan veriler gösterilir. Beta menüsü vurgulanır.

Sonraki adımlar

Yerleşik özellik filtreleri hakkında daha fazla bilgi edinmek için aşağıdaki belgelere geçin:

.NET özellik yönetimi kitaplığının tam özelliklerinin açıklaması için aşağıdaki belgeye devam edin.