Share via


Öğretici: ASP.NET Core uygulamasında dinamik yapılandırma kullanma

Bu öğretici, ASP.NET Core uygulamasında dinamik yapılandırma güncelleştirmelerini nasıl etkinleştirebileceğinizi gösterir. Hızlı başlangıçlarda sunulan web uygulamasını temel alır. Uygulamanız, yerleşik yapılandırma önbelleğe alma ve yenileme özellikleri için Uygulama Yapılandırması sağlayıcı kitaplığından yararlanacaktır. Devam etmeden önce Uygulama Yapılandırması ile ASP.NET Core uygulaması oluşturma işlemini tamamlayın.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Uygulamanızı bir Uygulama Yapılandırması deposundaki değişikliklere yanıt olarak yapılandırmasını güncelleştirecek şekilde ayarlayın.
  • Uygulamanıza en son yapılandırmayı ekleme.

Önkoşullar

Hızlı başlangıcı tamamlayın: Uygulama Yapılandırması ile ASP.NET Core uygulaması oluşturma.

Sentinel anahtarı ekleme

Sentinel anahtarı, diğer tüm anahtarların değiştirilmesini tamamladıktan sonra güncelleştirdiğiniz bir anahtardır. Uygulamanız sentinel anahtarını izler. Bir değişiklik algılandığında uygulamanız tüm yapılandırma değerlerini yeniler. Bu yaklaşım, uygulamanızdaki yapılandırmanın tutarlılığını sağlamaya yardımcı olur ve Uygulama Yapılandırması deponuza yapılan isteklerin genel sayısını, tüm anahtarları değişiklikler için izlemeye kıyasla azaltır.

  1. Azure portalında Uygulama Yapılandırması deponuzu açın ve Yapılandırma Gezgini > Anahtar değeri oluştur'u > seçin.
  2. Anahtar için TestApp:Ayarlar:Sentinel girin. Değer alanına 1 girin. Etiket ve İçerik türünü boş bırakın.
  3. Uygula’yı seçin.

Uygulama Yapılandırması'dan verileri yeniden yükleme

  1. Program.cs açın ve hızlı başlangıç sırasında daha önce eklediğiniz yöntemi güncelleştirinAddAzureAppConfiguration.

    // 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));
    });
    

    Select yöntemi, anahtar adı TestApp: ile başlayan ve etiketi olmayan tüm anahtar değerlerini yüklemek için kullanılır. Farklı ön eklere veya etiketlere sahip yapılandırmaları yüklemek için yöntemini birden çok kez çağırabilirsiniz Select . Bir Uygulama Yapılandırması deponuzu birden çok uygulamayla paylaşıyorsanız bu yaklaşım, mağazanızdan her şeyi yüklemek yerine yapılandırmanın yalnızca geçerli uygulamanızla ilgili yüklenmesine yardımcı olur.

    yöntemindeConfigureRefresh, Uygulama Yapılandırması deponuzdaki değişiklikler için izlemek istediğiniz anahtarları kaydedersiniz. refreshAll yönteminin Register parametresi, kayıtlı anahtar değişirse yöntemi tarafından Select belirttiğiniz tüm yapılandırmaların yeniden yüklendiğini gösterir.

    İpucu

    Yapılandırma yenilemeleri arasındaki en düşük süreyi belirtmek için yöntemine bir çağrı refreshOptions.SetCacheExpiration ekleyebilirsiniz. Bu örnekte varsayılan 30 saniye değerini kullanırsınız. Uygulama Yapılandırması deponuza yapılan istek sayısını azaltmanız gerekiyorsa daha yüksek bir değere ayarlayın.

  2. uygulamanızın hizmet koleksiyonuna Azure Uygulaması Yapılandırma ara yazılımı ekleyin.

    Program.cs aşağıdaki kodla güncelleştirin.

    // Existing code in Program.cs
    // ... ...
    
    builder.Services.AddRazorPages();
    
    // Add Azure App Configuration middleware to the container of services.
    builder.Services.AddAzureAppConfiguration();
    
    // 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
    // ... ...
    
  3. yöntemini çağırın UseAzureAppConfiguration . Uygulamanızın yapılandırmayı sizin yerinize otomatik olarak güncelleştirmek için Uygulama Yapılandırması ara yazılımını kullanmasını sağlar.

    Program.cs aşağıdaki kodla güncelleştirin.

    // Existing code in Program.cs
    // ... ...
    
    var app = builder.Build();
    
    if (!app.Environment.IsDevelopment())
    {
        app.UseExceptionHandler("/Error");
        app.UseHsts();
    }
    
    // Use Azure App Configuration middleware for dynamic configuration refresh.
    app.UseAzureAppConfiguration();
    
    // The rest of existing code in program.cs
    // ... ...
    

Uygulamanızı, hızlı başlangıç sırasında ASP.NET Core'daki seçenekler düzenini kullanacak şekilde ayarladınız. Uygulamanızın temel yapılandırması Uygulama Yapılandırması güncelleştirildiğinde, aracılığıyla IOptionsSnapshot<T> alınan kesin olarak yazılan Settings nesneniz otomatik olarak güncelleştirilir. Uygulama başlatıldıktan sonra yapılandırma verilerini okumadığından dinamik yapılandırma güncelleştirmesi isteniyorsa kullanmamanız IOptions<T> gerektiğini unutmayın.

İstek temelli yapılandırma yenilemesi

Yapılandırma yenilemesi, web uygulamanıza gelen istekler tarafından tetiklenir. Uygulamanız boşta olduğunda yenileme gerçekleşmez. Uygulamanız etkin olduğunda, Uygulama Yapılandırması ara yazılımı sentinel anahtarını veya aramada ConfigureRefresh yenilemek için kaydettiğiniz diğer anahtarları izler. Ara yazılım, uygulamanıza gelen her istekte tetikleniyor. Ancak ara yazılım yalnızca ayarladığınız önbellek süre sonu süresi geçtiğinde Uygulama Yapılandırması değerini denetlemek için istekler gönderir.

  • Değişiklik algılama için Uygulama Yapılandırması isteği başarısız olursa uygulamanız önbelleğe alınmış yapılandırmayı kullanmaya devam eder. Uygulamanıza yeni gelen istekler olduğunda, değişiklikleri denetlemeye yönelik yeni girişimler düzenli aralıklarla yapılır.
  • Yapılandırma yenilemesi, uygulamanızın gelen isteklerinin işlenmesiyle zaman uyumsuz olarak gerçekleşir. Yenilemeyi tetikleyen gelen isteği engellemez veya yavaşlatmaz. Yenilemeyi tetikleyen istek güncelleştirilmiş yapılandırma değerlerini alamayabilir, ancak sonraki istekler yeni yapılandırma değerleri alır.
  • Ara yazılımının tetiklendiğinden emin olmak için, başka bir ara yazılımın uygulamanızda bunu atlamaması için yöntemini istek işlem hattınızda uygun olan en erken zamanda çağırın app.UseAzureAppConfiguration() .

Uygulamayı yerel olarak derleme ve çalıştırma

  1. .NET CLI kullanarak uygulamayı derlemek için komut kabuğunda aşağıdaki komutu çalıştırın:

        dotnet build
    
  2. Derleme başarıyla tamamlandıktan sonra, web uygulamasını yerel olarak çalıştırmak için aşağıdaki komutu çalıştırın:

        dotnet run
    
  3. Bir tarayıcı penceresi açın ve çıkışta gösterilen URL'ye dotnet run gidin.

    Launching quickstart app locally

  4. Azure Portal’ında oturum açın. Tüm kaynaklar'ı seçin ve hızlı başlangıçta oluşturduğunuz Uygulama Yapılandırması depoyu seçin.

  5. Yapılandırma gezgini'ni seçin ve aşağıdaki anahtarların değerlerini güncelleştirin. Sonunda sentinel anahtarını güncelleştirmeyi unutmayın.

    Anahtar Değer
    TestApp:Ayarlar:BackgroundColor yeşil
    TestApp:Ayarlar:FontColor lightGray
    TestApp:Ayarlar:Message Azure Uygulaması Yapılandırmasından veriler - artık canlı güncelleştirmelerle!
    TestApp:Ayarlar:Sentinel 2
  6. Tarayıcıyı birkaç kez yenileyin. Önbelleğin süresi 30 saniye sonra dolduğunda sayfa güncelleştirilmiş içerikle gösterilir.

    Launching updated quickstart app locally

Günlüğe kaydetme ve izleme

Günlükler yapılandırma yenilemesi sonrasında çıkarılır ve Uygulama Yapılandırması deponuzdan alınan anahtar değerleri ve uygulamanızda yapılan yapılandırma değişiklikleri hakkında ayrıntılı bilgiler içerir.

  • Çağrıldığında services.AddAzureAppConfiguration() varsayılan ILoggerFactory değer otomatik olarak eklenir. Uygulama Yapılandırması sağlayıcısı, bu ILoggerFactory günlüklerin çıkışını ILoggerveren bir örneği oluşturmak için bunu kullanır. ASP.NET Core varsayılan olarak günlüğe kaydetme için kullanırILogger, bu nedenle Uygulama Yapılandırması sağlayıcısı için günlüğe kaydetmeyi etkinleştirmek için ek kod değişiklikleri yapmanız gerekmez.

  • Günlükler farklı günlük düzeylerinde çıkıştır. Varsayılan düzey: Information.

    Günlük Düzeyi Açıklama
    Hata Ayıklama Günlükler, uygulamanızın Uygulama Yapılandırması deponuzdan gelen değişiklikler için izlediği anahtar-değerlerin anahtarını ve etiketini içerir. Bilgiler ayrıca anahtar-değerin uygulamanızın zaten yüklemiş olduğu değerle karşılaştırıldığında değişip değişmediğini de içerir. Yapılandırma değişikliği beklendiği gibi gerçekleşmediyse uygulamanızın sorunlarını gidermek için günlükleri bu düzeyde etkinleştirin.
    Bilgiler Günlükler, yapılandırma yenilemesi sırasında güncelleştirilen yapılandırma ayarlarının anahtarlarını içerir. Hassas verilerin sızmasını önlemek için yapılandırma ayarlarının değerleri günlükten atlanır. Uygulamanızın beklenen yapılandırma değişikliklerini aldığından emin olmak için günlükleri bu düzeyde izleyebilirsiniz.
    Uyarı Günlükler, yapılandırma yenilemesi sırasında oluşan hataları ve özel durumları içerir. Yapılandırma sağlayıcısı önbelleğe alınan verileri kullanmaya devam edeceğinden ve bir dahaki sefere yapılandırmayı yenilemeye çalışacağından, zaman zaman oluşumlar yoksayılabilir. Olası sorunları gösterebilecek yinelenen uyarılar için bu düzeydeki günlükleri izleyebilirsiniz. Örneğin, bağlantı dizesi döndürdünüz ancak uygulamanızı güncelleştirmeyi unuttunuz.

    Aşağıdaki örneği dosyanıza appsettings.json ekleyerek günlük düzeyinde günlüğe kaydetmeyi Debug etkinleştirebilirsiniz. Bu örnek diğer tüm günlük düzeyleri için de geçerlidir.

    "Logging": {
        "LogLevel": {
            "Microsoft.Extensions.Configuration.AzureAppConfiguration": "Debug"
        }
    }
    
  • Günlük kategorisi, her günlük öncesinde görünen şeklindedir Microsoft.Extensions.Configuration.AzureAppConfiguration.Refresh. Her günlük düzeyinde bazı örnek günlükler aşağıda verilmiştir:

    dbug: Microsoft.Extensions.Configuration.AzureAppConfiguration.Refresh[0]
        Key-value read from App Configuration. Change:'Modified' Key:'ExampleKey' Label:'ExampleLabel' Endpoint:'https://examplestore.azconfig.io'
    
    info: Microsoft.Extensions.Configuration.AzureAppConfiguration.Refresh[0]
        Setting updated. Key:'ExampleKey'
    
    warn: Microsoft.Extensions.Configuration.AzureAppConfiguration.Refresh[0]
        A refresh operation failed while resolving a Key Vault reference.
    Key vault error. ErrorCode:'SecretNotFound' Key:'ExampleKey' Label:'ExampleLabel' Etag:'6LaqgBQM9C_Do2XyZa2gAIfj_ArpT52-xWwDSLb2hDo' SecretIdentifier:'https://examplevault.vault.azure.net/secrets/ExampleSecret'
    

kullanımı ILogger , ASP.NET uygulamalarında tercih edilen yöntemdir ve örneğinin ILoggerFactory mevcut olması durumunda günlüğe kaydetme kaynağı olarak önceliklendirilir. Ancak, kullanılamıyorsaILoggerFactory, günlükler alternatif olarak .NET Core uygulamalarına yönelik yönergeler aracılığıyla etkinleştirilebilir ve yapılandırılabilir. Daha fazla bilgi için bkz . .NET Core ve ASP.NET Core'da oturum açma.

Not

Aşağıdaki paketlerden herhangi birinin 6.0.0 veya sonraki bir sürümünü kullanıyorsanız günlüğe kaydetme kullanılabilir.

  • Microsoft.Extensions.Configuration.AzureAppConfiguration
  • Microsoft.Azure.AppConfiguration.AspNetCore
  • Microsoft.Azure.AppConfiguration.Functions.Worker

Kaynakları temizleme

Bu makalede oluşturulan kaynakları kullanmaya devam etmek istemiyorsanız ücretlerden kaçınmak için burada oluşturduğunuz kaynak grubunu silin.

Önemli

Silinen kaynak grupları geri alınamaz. Kaynak grubu ve içindeki tüm kaynaklar kalıcı olarak silinir. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. Bu makalenin kaynaklarını, saklamak istediğiniz diğer kaynakları içeren bir kaynak grubu içinde oluşturduysanız, kaynak grubunu silmek yerine her kaynağı ilgili bölmeden tek tek silin.

  1. Azure portalında oturum açın ve Kaynak grupları'nı seçin.
  2. Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
  3. Genel bir bakış görmek için sonuç listesinde kaynak grubu adını seçin.
  4. Kaynak grubunu sil'i seçin.
  5. Kaynak grubunun silinmesini onaylamanız istenir. Onaylamak için kaynak grubunuzun adını girin ve Sil'i seçin.

Birkaç dakika sonra kaynak grubu ve tüm kaynakları silinir.

Sonraki adımlar

Bu öğreticide, yapılandırma ayarlarını Uygulama Yapılandırması dinamik olarak yenilemek için ASP.NET Core web uygulamanızı etkinleştirmişsiniz. Uygulama Yapılandırması erişimini kolaylaştırmak için Azure tarafından yönetilen kimlik kullanmayı öğrenmek için sonraki öğreticiye geçin.