öğretici: ASP.NET Core uygulamasında dinamik yapılandırmayı kullanma
ASP.NET Core, çeşitli kaynaklardan yapılandırma verilerini okuyabilen takılabilir bir yapılandırma sistemine sahiptir. Bir uygulamanın yeniden başlatılmasına neden olmadan değişiklikleri dinamik olarak işleyebilir. ASP.NET Core, yapılandırma ayarlarının kesin belirlenmiş .net sınıflarına bağlamasını destekler. IOptionsSnapshot<T>Temel alınan veriler değiştiğinde uygulamanın yapılandırmasını otomatik olarak yeniden yükleyerek, kullanarak bunları kodunuza çıkartır.
Bu öğreticide, kodunuzda dinamik yapılandırma güncelleştirmelerini nasıl uygulayabileceğinizi gösterir. Hızlı başlangıçlarda tanıtılan web uygulamasında oluşturulur. devam etmeden önce, önce uygulama yapılandırması ile bir ASP.NET Core uygulaması oluşturun .
Bu öğreticideki adımları uygulamak için herhangi bir kod düzenleyicisi kullanabilirsiniz. Visual Studio Code , Windows, macos ve Linux platformlarında kullanılabilen harika bir seçenektir.
Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:
- Uygulama yapılandırma deposundaki değişikliklere yanıt olarak yapılandırmasını güncelleştirmek için uygulamanızı ayarlayın.
- En son yapılandırmayı uygulamanızın denetleyicilerine ekleme.
Önkoşullar
Bu öğreticiyi yapmak için .NET Core SDK' yi yüklemelisiniz.
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
devam etmeden önce, önce uygulama yapılandırması ile bir ASP.NET Core uygulaması oluşturun .
Sentinel anahtarı ekleme
Sentinel anahtarı , diğer tüm anahtarların değiştirilmesini tamamladıktan sonra güncelleştirmeniz gereken özel 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ızda yapılandırmanın tutarlılığını sağlamaya ve uygulama yapılandırmasına yapılan isteklerin genel sayısını azalttığından ve tüm anahtarların değişiklikler için izlenmesini karşılaştırmanıza yardımcı olur.
- Azure portal, yapılandırma gezgini > oluştur > anahtar-değer' i seçin.
- anahtar için TestApp: Ayarlar: Sentinel yazın. Değer için 1 girin. Etiketi ve içerik türünü boş bırakın.
- Uygula’yı seçin.
Not
Sentinel anahtarı kullanmıyorsanız, izlemek istediğiniz her anahtarı el ile kaydetmeniz gerekir.
Uygulama yapılandırmasından verileri yeniden yükleme
Microsoft.Azure.AppConfiguration.AspNetCoreaşağıdaki komutu çalıştırarak NuGet paketine bir başvuru ekleyin:dotnet add package Microsoft.Azure.AppConfiguration.AspNetCoreProgram. cs' yi açın ve yöntemi
CreateWebHostBuildereklemek için yöntemi güncelleştirinconfig.AddAzureAppConfiguration().public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => webBuilder.ConfigureAppConfiguration((hostingContext, config) => { var settings = config.Build(); config.AddAzureAppConfiguration(options => { options.Connect(settings["ConnectionStrings:AppConfig"]) .ConfigureRefresh(refresh => { refresh.Register("TestApp:Settings:Sentinel", refreshAll: true) .SetCacheExpiration(new TimeSpan(0, 5, 0)); }); }); }) .UseStartup<Startup>());ConfigureRefreshYönteminde, uygulama yapılandırma deponuzdaki değişiklikleri izlemek istediğiniz anahtarları kaydedersiniz.refreshAllYöntemi parametresi,Registerkayıtlı anahtar değişirse tüm yapılandırma değerlerinin yenilenmesi gerektiğini gösterir.SetCacheExpirationYöntemi, 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, 30 saniyelik varsayılan süre sonu süresini 5 dakikalık bir süre belirterek geçersiz kılarsınız. Bu, uygulama yapılandırma deponuzda yapılan isteklerin olası sayısını azaltır.Not
Sınama amacıyla, önbellek yenileme sona erme süresini düşürmek isteyebilirsiniz.
Bir yapılandırma yenilemeyi gerçekten tetiklemek için uygulama yapılandırma ara yazılımını kullanacaksınız. Bu, sonraki bir adımda nasıl yapılacağını göreceksiniz.
yeni bir sınıfı tanımlayan ve uygulayan Controllers dizinine bir Ayarlar. cs dosyası ekleyin
Settings. Ad alanını projenizin adıyla değiştirin.namespace TestAppConfig { public class Settings { public string BackgroundColor { get; set; } public long FontSize { get; set; } public string FontColor { get; set; } public string Message { get; set; } } }Startup. cs' yi açın ve
ConfigureServicesyöntemini güncelleştirin.Configure<Settings>Yapılandırma verilerini sınıfına bağlama çağrısıSettings.AddAzureAppConfigurationUygulamanızın hizmet koleksiyonuna uygulama yapılandırma bileşenleri eklemek için çağırın.public void ConfigureServices(IServiceCollection services) { services.Configure<Settings>(Configuration.GetSection("TestApp:Settings")); services.AddControllersWithViews(); services.AddAzureAppConfiguration(); }Yöntemini güncelleştirin
Configureve öğesine bir çağrı ekleyinUseAzureAppConfiguration. Uygulamanızın yapılandırma güncelleştirmelerini sizin için otomatik olarak işlemesini sağlamak üzere uygulama yapılandırma ara yazılımını kullanmasını sağlar.public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } // Add the following line: app.UseAzureAppConfiguration(); app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); }Not
Uygulama yapılandırma ara yazılımı,
ConfigureRefreshönceki adımda yapılan çağrıda, Sentinel anahtarını veya yenileme için kaydettiğiniz diğer anahtarları izler. Ara yazılım, uygulamanıza gelen her istek üzerine tetiklenir. Ancak, ara yazılım yalnızca ayarladığınız önbellek süre sonu geçtiğinde uygulama yapılandırmasındaki değeri denetlemek için istekleri gönderir. Bir değişiklik algılandığında, Sentinel anahtarı kullanılıyorsa ya da yalnızca kayıtlı anahtarların değerlerini güncelleştirdiğinizde tüm yapılandırmayı güncelleştirir.- Değişiklik algılama için uygulama yapılandırmasına yönelik bir istek başarısız olursa, uygulamanız önbelleğe alınmış yapılandırmayı kullanmaya devam eder. Yapılandırılan önbelleğin süre sonu zamanı yeniden geçtiğinde ve uygulamanıza yönelik yeni gelen istekler olduğunda başka bir denetim yapılır.
- Yapılandırma yenilemesi, uygulama gelen isteklerinizin işlenmesine zaman uyumsuz olarak yapılır. Yenilemeyi tetikleyen gelen isteği engellemez veya yavaşlatmaz. Yenilemeyi tetikleyen istek güncelleştirilmiş yapılandırma değerlerini alamaz, ancak sonraki istekler yapılır.
- Ara yazılımın tetiklendiğinden emin olmak için,
app.UseAzureAppConfiguration()istek işlem hattınızda uygun olan kadar erken çağırın. böylece, başka bir ara yazılım uygulamanızda bu uygulamayı kısa sürede devre dışı olmayacaktır.
En son yapılandırma verilerini kullan
Controllers dizinindeki HomeController. cs ' yi açın ve pakete bir başvuru ekleyin
Microsoft.Extensions.Options.using Microsoft.Extensions.Options;HomeControllerBağımlılık ekleme yoluyla almak için sınıfı güncelleştirinSettingsve değerlerini kullanın.public class HomeController : Controller { private readonly Settings _settings; private readonly ILogger<HomeController> _logger; public HomeController(ILogger<HomeController> logger, IOptionsSnapshot<Settings> settings) { _logger = logger; _settings = settings.Value; } public IActionResult Index() { ViewData["BackgroundColor"] = _settings.BackgroundColor; ViewData["FontSize"] = _settings.FontSize; ViewData["FontColor"] = _settings.FontColor; ViewData["Message"] = _settings.Message; return View(); } // ... }İpucu
Yapılandırma değerlerini okurken seçenekler deseni hakkında daha fazla bilgi için, ASP.NET Core Içindeki seçenekler desenlerinebakın.
Görünümler > giriş dizininde Index. cshtml dosyasını açın ve içeriğini aşağıdaki komut dosyasıyla değiştirin:
<!DOCTYPE html> <html lang="en"> <style> body { background-color: @ViewData["BackgroundColor"] } h1 { color: @ViewData["FontColor"]; font-size: @ViewData["FontSize"]px; } </style> <head> <title>Index View</title> </head> <body> <h1>@ViewData["Message"]</h1> </body> </html>
Uygulamayı yerel olarak derleyin ve çalıştırın
.NET Core CLI kullanarak uygulamayı derlemek için komut kabuğu 'nda aşağıdaki komutu çalıştırın:
dotnet buildOluşturma 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 runBir tarayıcı penceresi açın ve çıktıda gösterilen URL 'ye gidin
dotnet run.
Azure Portal oturum 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. En son Sentinel anahtarını güncelleştirmeyi unutmayın.
Anahtar Değer TestApp: Ayarlar: BackgroundColor green TestApp: Ayarlar: fontcolor Açık gri TestApp: Ayarlar: ileti Azure Uygulama yapılandırmasından alınan veriler-canlı güncelleştirmeler ile şimdi! TestApp: Ayarlar: Sentinel 2 Yeni yapılandırma ayarlarını görmek için tarayıcı sayfasını yenileyin. Değişikliklerin yansıtılması için birden çok kez yenilemeniz veya önbellek süre sonu süresini 5 dakikadan kısa bir süre içinde değiştirmeniz gerekebilir.

Kaynakları temizleme
Bu makalede oluşturulan kaynakları kullanmaya devam etmek istemiyorsanız, ücretlendirmemek 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 makaleye ait kaynakları tutmak istediğiniz diğer kaynakları içeren bir kaynak grubu içinde oluşturduysanız, kaynak grubunu silmek yerine her kaynağı ilgili bölmeden ayrı ayrı silin.
- Azure Portaloturum açın ve kaynak grupları' nı seçin.
- Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
- Sonuç listesinde, bir genel bakışı görmek için 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, uygulama yapılandırmasından yapılandırma ayarlarını dinamik olarak yenilemek için ASP.NET Core web uygulamanızı etkinleştirdiniz. Uygulama yapılandırmasına erişimi kolaylaştırmak için Azure tarafından yönetilen bir kimlik kullanmayı öğrenmek için bir sonraki öğreticiye geçin.