Öğretici: .NET Core uygulamasında dinamik yapılandırma kullanma
Uygulama yapılandırması .NET sağlayıcı kitaplığı, bir uygulamanın yeniden başlatılmasına neden olmadan isteğe bağlı yapılandırmayı güncelleştirmeyi destekler. Bu öğreticide, kodunuzda dinamik yapılandırma güncelleştirmelerini nasıl uygulayabileceğinizi gösterir. Hızlı başlangıçta tanıtılan uygulamada oluşturulur. Devam etmeden önce uygulama yapılandırması ile bir .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:
- Bir uygulama yapılandırma deposundaki değişikliklere yanıt olarak yapılandırmasını güncelleştirmek için .NET Core uygulamanızı ayarlayın.
- Uygulamanızdaki en son yapılandırmayı tükettin.
Önkoşullar
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Hızlı başlangıcı tamamlama uygulama yapılandırması ile bir .NET Core uygulaması oluşturun.
Etkinlik temelli yapılandırma yenileme
Program. cs ' i açın ve kodu aşağıdaki gibi güncelleştirin.
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.AzureAppConfiguration;
using System;
using System.Threading.Tasks;
namespace TestConsole
{
class Program
{
private static IConfiguration _configuration = null;
private static IConfigurationRefresher _refresher = null;
static void Main(string[] args)
{
var builder = new ConfigurationBuilder();
builder.AddAzureAppConfiguration(options =>
{
options.Connect(Environment.GetEnvironmentVariable("ConnectionString"))
.ConfigureRefresh(refresh =>
{
refresh.Register("TestApp:Settings:Message")
.SetCacheExpiration(TimeSpan.FromSeconds(10));
});
_refresher = options.GetRefresher();
});
_configuration = builder.Build();
PrintMessage().Wait();
}
private static async Task PrintMessage()
{
Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!");
// Wait for the user to press Enter
Console.ReadLine();
await _refresher.TryRefreshAsync();
Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!");
}
}
}
ConfigureRefreshYönteminde, uygulama yapılandırma deponuzdaki bir anahtar değişiklik izleme için kaydedilir. Bu Register yöntemde, refreshAll kayıtlı anahtar değişirse tüm yapılandırma değerlerinin yenilenmesi gerekip gerekmediğini belirtmek için kullanılabilen isteğe bağlı bir Boolean parametresi vardır. bu örnekte, yalnızca key TestApp: Ayarlar: ileti yenilenir. 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, varsayılan süre sonu saati olan 30 saniye, Gösterim amacıyla 10 saniyelik bir süre belirterek geçersiz kılınır.
ConfigureRefreshMetodun tek tek çağrılması yapılandırmanın otomatik olarak yenilenmesini sağlar. TryRefreshAsync IConfigurationRefresher Yenilemeyi tetiklemek için arabiriminden yöntemi çağırın. Bu tasarım, uygulamanız boşta kaldığında bile uygulama yapılandırmasına gönderilen hayalet isteklerin önleneceğini ortadan kaldırmaktır. Uygulamanızı etkin bir şekilde düşündüğünüz çağrıyı dahil etmek isteyeceksiniz TryRefreshAsync . Örneğin, bir gelen ileti, bir sipariş veya karmaşık bir görevin yinelemesi işlem sırasında olabilir. Uygulamanız her zaman etkin ise bir Zamanlayıcı da olabilir. Bu örnekte, TryRefreshAsync ENTER tuşuna bastığınızda her seferinde çağrı yapabilirsiniz. TryRefreshAsyncHer nedenden dolayı çağrı başarısız olsa bile, uygulamanız önbelleğe alınmış yapılandırmayı kullanmaya devam edecektir. Yapılandırılan önbellek süre sonu saati geçtiğinde ve TryRefreshAsync çağrı, uygulama etkinliğinizi tarafından tetiklendiğinde, başka bir deneme yapılır. TryRefreshAsyncYapılandırılan önbellek süre sonu süresi geçmeden önce çağrı yapılmaz; bu nedenle, sık olarak çağrılsa bile performans etkisi en düşük düzeyde olur.
Uygulamayı yerel olarak derleyin ve çalıştırın
ConnectionString adlı bir ortam değişkeni ayarlayın ve uygulama yapılandırma deponuzu için erişim anahtarı olarak ayarlayın. Windows komut istemi ' ni kullanırsanız, aşağıdaki komutu çalıştırın ve değişikliğin etkili olması için komut istemi ' ni yeniden başlatın:
setx ConnectionString "connection-string-of-your-app-configuration-store"Windows PowerShell kullanıyorsanız, aşağıdaki komutu çalıştırın:
$Env:ConnectionString = "connection-string-of-your-app-configuration-store"MacOS veya Linux kullanıyorsanız şu komutu çalıştırın:
export ConnectionString='connection-string-of-your-app-configuration-store'Konsol uygulamasını derlemek için aşağıdaki komutu çalıştırın:
dotnet buildOluşturma başarıyla tamamlandıktan sonra, uygulamayı yerel olarak çalıştırmak için aşağıdaki komutu çalıştırın:
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:
Anahtar Değer TestApp: Ayarlar: ileti Azure Uygulama yapılandırmasından alınan veriler-güncelleştirildi Yenileme tetiklemek ve komut Istemi veya PowerShell penceresinde güncelleştirilmiş değeri yazdırmak için ENTER tuşuna basın.

Not
Önbellek sona erme zamanı,
SetCacheExpirationyenileme işlemi için yapılandırmayı belirtirken yöntemi kullanılarak 10 saniye olarak ayarlandığından, yapılandırma ayarı değeri yalnızca bu ayar için en son yenilemeden bu yana en az 10 saniye geçtiğinde güncelleştirilir.
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 .NET Core uygulamanızı etkinleştirdiniz. Azure yönetilen kimliğin uygulama yapılandırmasına erişimi kolaylaştırmak için nasıl kullanılacağını öğrenmek için bir sonraki öğreticiye geçin.