Öğ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.
- Azure portalında Uygulama Yapılandırması deponuzu açın ve Yapılandırma Gezgini > Anahtar değeri oluştur'u > seçin.
- Anahtar için TestApp:Ayarlar:Sentinel girin. Değer alanına 1 girin. Etiket ve İçerik türünü boş bırakın.
- Uygula’yı seçin.
Uygulama Yapılandırması'dan verileri yeniden yükleme
Program.cs açın ve hızlı başlangıç sırasında daha önce eklediğiniz yöntemi güncelleştirin
AddAzureAppConfiguration
.// 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ğırabilirsinizSelect
. 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önteminde
ConfigureRefresh
, Uygulama Yapılandırması deponuzdaki değişiklikler için izlemek istediğiniz anahtarları kaydedersiniz.refreshAll
yöntemininRegister
parametresi, kayıtlı anahtar değişirse yöntemi tarafındanSelect
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.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 // ... ...
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
.NET CLI kullanarak uygulamayı derlemek için komut kabuğunda aşağıdaki komutu çalıştırın:
dotnet build
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
Bir tarayıcı penceresi açın ve çıkışta gösterilen URL'ye
dotnet run
gidin.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.
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:İleti Azure Uygulaması Yapılandırmasından veriler - artık canlı güncelleştirmelerle! TestApp:Ayarlar:Sentinel 2 Tarayıcıyı birkaç kez yenileyin. Önbelleğin süresi 30 saniye sonra dolduğunda sayfa güncelleştirilmiş içerikle gösterilir.
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ılanILoggerFactory
değer otomatik olarak eklenir. Uygulama Yapılandırması sağlayıcısı, buILoggerFactory
günlüklerin çıkışınıILogger
veren 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 kaydetmeyiDebug
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.
- Azure portalında oturum açın ve Kaynak grupları'nı seçin.
- Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
- Genel bir bakış görmek için sonuç listesinde kaynak grubu adını seçin.
- Kaynak grubunu sil'i seçin.
- 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.