Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uygulama Yapılandırması .NET sağlayıcı kitaplığı, bir uygulamanın yeniden başlatılmasına neden olmadan yapılandırmanın isteğe bağlı olarak güncelleştirilmesini destekler. Bu öğretici, kodunuzda dinamik yapılandırma güncelleştirmelerini nasıl uygulayabileceğinizi gösterir. Hızlı başlangıç kılavuzunda tanıtılan uygulamayı temel alır. Devam etmeden önce Uygulama Yapılandırması ile .NET uygulaması oluşturma işlemini tamamlamanız gerekir.
Bu öğreticideki adımları gerçekleştirmek için herhangi bir kod düzenleyicisini kullanabilirsiniz. Visual Studio Code , Windows, macOS ve Linux platformlarında kullanılabilen mükemmel bir seçenektir.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Bir Uygulama Yapılandırma deposundaki değişikliklere yanıt olarak .NET uygulamanızı yapılandırmasını güncelleştirecek şekilde ayarlayın.
- Uygulamanızda en son yapılandırmayı kullanma.
Önkoşullar
Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.
Uygulama Yapılandırması ile .NET uygulaması oluşturma hızlı başlangıcını tamamlayın.
Etkinlik temelli yapılandırma yenilemesi
Program.cs açın ve dosyayı aşağıdaki kodla güncelleştirin. Microsoft Entra ID (önerilen) veya bir bağlantı dizesi kullanarak Uygulama Yapılandırmasına bağlanabilirsiniz. Aşağıdaki kod parçacığında Microsoft Entra Id kullanımı gösterilmektedir.
DefaultAzureCredential öğesini Uygulama Yapılandırması deponuzda kimlik doğrulaması yapmak için kullanırsınız. Önkoşullarda listelenen hızlı başlangıcı tamamlarken, kimlik bilgilerinizi Uygulama Yapılandırması Veri Okuyucusu rolüne atamıştınız.
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.AzureAppConfiguration;
using Azure.Identity;
IConfiguration _configuration = null;
IConfigurationRefresher _refresher = null;
var builder = new ConfigurationBuilder();
builder.AddAzureAppConfiguration(options =>
{
string endpoint = Environment.GetEnvironmentVariable("Endpoint");
options.Connect(new Uri(endpoint), new DefaultAzureCredential())
// Load the key-value with key "TestApp:Settings:Message" and no label
.Select("TestApp:Settings:Message")
// Reload configuration if any selected key-values have changed.
.ConfigureRefresh(refresh =>
{
refresh.RegisterAll()
.SetRefreshInterval(TimeSpan.FromSeconds(10));
})
_refresher = options.GetRefresher();
});
_configuration = builder.Build();
Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!");
// Wait for the user to press Enter
Console.ReadLine();
if (_refresher != null)
{
await _refresher.TryRefreshAsync();
Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!");
}
yönteminin ConfigureRefreshRegisterAll içinde, seçilen anahtar değerlerinden herhangi birinde bir değişiklik algıladığınızda Uygulama Yapılandırması sağlayıcısına yapılandırmanın tamamını yeniden yüklemesini bildirmek için yöntemini çağırırsınız (bu durumda yalnızca TestApp:Settings:Message). Yapılandırma değişikliklerini izleme hakkında daha fazla bilgi için bkz. Yapılandırma yenileme için en iyi yöntemler.
yöntemi, SetRefreshInterval yapılandırma değişikliklerini denetlemek için Uygulama Yapılandırması'na yeni bir istek yapılmadan önce geçmesi gereken en kısa süreyi belirtir. Bu örnekte, gösterim amacıyla bunun yerine 10 saniyelik bir süre belirterek 30 saniyelik varsayılan süre sonunu geçersiz kılarsınız.
Yöntemin tek başına çağrılması ConfigureRefresh , yapılandırmanın otomatik olarak yenilenmesine neden olmaz. Yenilemeyi TryRefreshAsync tetiklemek için arabiriminden IConfigurationRefresher yöntemini çağırırsınız. Bu tasarım, uygulamanız boşta olsa bile Uygulama Yapılandırması gönderilen istekleri önlemeye yöneliktir. Çağrıyı TryRefreshAsync uygulamanızın etkin olduğunu düşündüğünüz yere eklemek istersiniz. Örneğin, gelen bir iletiyi, bir siparişi veya karmaşık bir görevin yinelemesini işlerken olabilir. Uygulamanız sürekli etkinse zamanlayıcıda da olabilir. Enter tuşuna her bastığınızda, TryRefreshAsync çağırırsınız. Arama TryRefreshAsync herhangi bir nedenle başarısız olsa bile, uygulamanız önbelleğe alınmış yapılandırmayı kullanmaya devam eder. Yapılandırılan yenileme aralığı geçtiğinde ve TryRefreshAsync çağrı uygulama etkinliğiniz tarafından yeniden tetiklendiğinde başka bir deneme yapılır. Çağrı TryRefreshAsync, yapılandırılan yenileme aralığı tamamlanmadan önce bir no-op olduğundan, sık çağrılsa bile performansa etkisi minimum düzeydedir.
Bağımlılık enjeksiyonu kullanarak yapılandırma yenilemesi
Önceki kodda, IConfigurationRefresher örneğini TryRefreshAsync öğesini çağırmak için manuel olarak kaydediyorsunuz. Alternatif olarak, hizmetlerinizi çözümlemek için bağımlılık ekleme kullanıyorsanız aşağıdaki adımlara başvurabilirsiniz.
üzerinde
AddAzureAppConfigurationçağırarakIServiceCollectiongerekli Uygulama Yapılandırma hizmetlerini kaydedin.aşağıdaki kodu Program.cs ekleyin.
// Existing code in Program.cs // ... ... // Add Azure App Configuration services to IServiceCollection builder.Services.AddAzureAppConfiguration();Hizmet koleksiyonunuzdan bir
IConfigurationRefresherProviderörneğini çözümleyip, her bir yenileyicisi üzerindeTryRefreshAsyncişlemini gerçekleştirerek yapılandırmanızı yenileyin.class SampleConfigRefresher { private readonly IEnumerable<IConfigurationRefresher> _refreshers = null; public SampleConfigRefresher(IConfigurationRefresherProvider refresherProvider) { _refreshers = refresherProvider.Refreshers; } public async Task RefreshConfiguration() { foreach (var refresher in _refreshers) { _ = refresher.TryRefreshAsync(); } } }
Uygulamayı yerel olarak derleme ve çalıştırma
Azure portalındaki mağazanıza genel bakış bölümünde bulunan Uygulama Yapılandırması deponuzun uç noktasına Uç Nokta adlı bir ortam değişkeni ayarlayın.
Windows komut istemini kullanıyorsanız, aşağıdaki komutu çalıştırın ve değişikliğin etkili olması için komut istemini yeniden başlatın:
setx Endpoint "<endpoint-of-your-app-configuration-store>"PowerShell kullanıyorsanız aşağıdaki komutu çalıştırın:
$Env:Endpoint = "<endpoint-of-your-app-configuration-store>"macOS veya Linux kullanıyorsanız aşağıdaki komutu çalıştırın:
export Endpoint='<endpoint-of-your-app-configuration-store>'Konsol uygulamasını oluşturmak için aşağıdaki komutu çalıştırın:
dotnet buildDerleme başarıyla tamamlandıktan sonra aşağıdaki komutu çalıştırarak uygulamayı yerel olarak çalıştırın:
dotnet run
Azure portalınaoturum açın. Tüm kaynaklar'ı seçin ve hızlı başlangıçta oluşturduğunuz Uygulama Yapılandırma deposu örneğini seçin.
Yapılandırma Gezgini'ni seçin ve aşağıdaki anahtarların değerlerini güncelleştirin:
Anahtar Değer TestApp:Ayarlar:Mesaj Azure Uygulama Yapılandırmasından Veriler - Güncelleştirildi Yenilemeyi tetiklemek ve güncelleştirilmiş değeri Komut İstemi veya PowerShell penceresinde yazdırmak için Enter tuşuna basın.
Uyarı
Yenileme işlemi için yapılandırma belirtilirken yöntemi kullanılarak
SetRefreshIntervalyenileme aralığı 10 saniye olarak ayarlandığından, yapılandırma ayarının değeri yalnızca bu ayar için son yenilemeden bu yana en az 10 saniye geçtiğinde güncelleştirilir.
Kayıt tutma 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. ASP.NET Core uygulamanız varsa, ASP.NET Core'da Günlükleme ve İzleme yönergelerine bakın. Aksi takdirde, Azure SDK ile günlüğe kaydetme yönergelerini kullanarak günlüğü etkinleştirebilirsiniz.
Günlükler farklı etkinlik seviyelerinde çıktı verir. Varsayılan düzey:
Informational.Olay Düzeyi Açıklama Ağır dilli 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. Bilgilendirici 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 sonraki seferde yapılandırmayı yenilemeye çalışacağından, ara sıra meydana gelen durumlar göz ardı edilebilir. 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. Verboseolay düzeyinde günlüğe kaydetmeyi etkinleştirmek için, aşağıdaki örnekte olduğu gibiEventLevel.Verboseparametresini belirtebilirsiniz. Bu yönergeler diğer tüm olay düzeyleri için de geçerlidir. Bu örnek, yalnızcaMicrosoft-Extensions-Configuration-AzureAppConfiguration-Refreshkategorisi için günlükleri de açar.using var listener = new AzureEventSourceListener((eventData, text) => { if (eventData.EventSource.Name == "Microsoft-Extensions-Configuration-AzureAppConfiguration-Refresh") { Console.WriteLine("[{1}] {0}: {2}", eventData.EventSource.Name, eventData.Level, text); } }, EventLevel.Verbose);Günlük kategorisi, her günlükten önce görünen
Microsoft-Extensions-Configuration-AzureAppConfiguration-Refresh'dir. Her olay düzeyinde bazı örnek günlükler aşağıda verilmiştir:[Verbose] Microsoft-Extensions-Configuration-AzureAppConfiguration-Refresh: Key-value read from App Configuration. Change:'Modified' Key:'ExampleKey' Label:'ExampleLabel' Endpoint:'https://examplestore.azconfig.io' [Informational] Microsoft-Extensions-Configuration-AzureAppConfiguration-Refresh: Setting updated. Key:'ExampleKey' [Warning] Microsoft-Extensions-Configuration-AzureAppConfiguration-Refresh: 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'
Uyarı
Aşağıdaki paketlerden herhangi birinin 6.0.0 veya daha sonraki bir sürümünü kullanıyorsanız günlük kaydı yapılabilir.
Microsoft.Extensions.Configuration.AzureAppConfigurationMicrosoft.Azure.AppConfiguration.AspNetCoreMicrosoft.Azure.AppConfiguration.Functions.Worker
Kaynakları temizle
Bu makalede oluşturulan kaynakları kullanmaya devam etmek istemiyorsanız ücretlerden kaçınmak için burada oluşturduğunuz kaynak grubunu silin.
Önemli
Bir kaynak grubunu silmek 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, .NET uygulamanızı Uygulama Yapılandırması'ndan yapılandırma ayarlarını dinamik olarak yenilemek için etkinleştirmişsinizdir. Azure yönetilen kimliğini kullanarak Uygulama Yapılandırması erişimini kolaylaştırmayı öğrenmek için sonraki öğreticiye geçin.