Öğretici: Azure Işlevleri uygulamasında dinamik yapılandırma kullanma
Uygulama yapılandırması .NET yapılandırma sağlayıcısı, uygulama etkinliğine göre dinamik olarak yönetilen yapılandırmayı önbelleğe almayı ve yenilemeyi destekler. Bu öğreticide, kodunuzda dinamik yapılandırma güncelleştirmelerini nasıl uygulayabileceğinizi gösterir. Hızlı başlangıçlarda tanıtılan Azure Işlevleri uygulamasında oluşturulur. Devam etmeden önce, önce Azure Uygulama yapılandırması ile bir Azure işlevleri uygulaması oluşturun .
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 Azure Işlevleri uygulamanızı ayarlayın.
- Azure Işlevleri çağrılarınız için en son yapılandırmayı ekleme.
Önkoşullar
- Azure aboneliği- ücretsiz olarak bir tane oluşturun
- Azure geliştirme iş yükünde 2019 Visual Studio
- Azure Işlevleri araçları
- Son hızlı başlangıç Azure Uygulama yapılandırması ile bir Azure işlevleri uygulaması oluşturma
Uygulama yapılandırmasından verileri yeniden yükleme
Startup. cs' yi açın ve
ConfigureAppConfigurationyöntemini güncelleştirin.ConfigureRefreshYöntemi, uygulama içinde bir yenileme tetiklendiğinde bir ayarı değişiklikler için denetlenecek bir ayar kaydeder ve bu, daha sonra eklenirken daha sonraki adımda gerçekleştirilir_configurationRefresher.TryRefreshAsync().refreshAllParametresi, kayıtlı ayarda her değişiklik algılandığında uygulama yapılandırma sağlayıcısına tüm yapılandırmayı yeniden yüklemesi talimatını verir.Yenileme için kaydedilen tüm ayarlar varsayılan önbellek süresi olan 30 saniyedir. Yöntemi çağırarak güncelleştirilemeyebilir
AzureAppConfigurationRefreshOptions.SetCacheExpiration.public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder) { builder.ConfigurationBuilder.AddAzureAppConfiguration(options => { options.Connect(Environment.GetEnvironmentVariable("ConnectionString")) // Load all keys that start with `TestApp:` .Select("TestApp:*") // Configure to reload configuration if the registered sentinel key is modified .ConfigureRefresh(refreshOptions => refreshOptions.Register("TestApp:Settings:Sentinel", refreshAll: true)); }); }İpucu
Uygulama yapılandırmasında birden çok anahtar değeri güncelleştirirken, uygulamanızın tüm değişiklikler yapılmadan önce yapılandırmayı yeniden yüklenmesini istemezsiniz. Sentinel anahtarını kaydedebilir ve yalnızca diğer tüm yapılandırma değişiklikleri tamamlandığında onu güncelleştirebilirsiniz. Bu, uygulamanızda yapılandırmanın tutarlılığını sağlamaya yardımcı olur.
ConfigureAzure uygulama yapılandırma Hizmetleri 'ni bağımlılık ekleme yoluyla kullanılabilir hale getirmek için yöntemini güncelleştirin.public override void Configure(IFunctionsHostBuilder builder) { builder.Services.AddAzureAppConfiguration(); }İşlev1. cs' yi açın ve aşağıdaki ad alanlarını ekleyin.
using System.Linq; using Microsoft.Extensions.Configuration.AzureAppConfiguration;IConfigurationRefresherProviderÖrneğini elde ettiğiniz bağımlılık ekleme yoluyla örneğini almak için oluşturucuyu güncelleştirinIConfigurationRefresher.private readonly IConfiguration _configuration; private readonly IConfigurationRefresher _configurationRefresher; public Function1(IConfiguration configuration, IConfigurationRefresherProvider refresherProvider) { _configuration = configuration; _configurationRefresher = refresherProvider.Refreshers.First(); }Runİşlev çağrısının başlangıcında yöntemi kullanarak yapılandırmayı yenilemek için yöntemi ve sinyali güncelleştirinTryRefreshAsync. Önbellek sona erme saati penceresine ulaşılırsa, bu işlem yapılmaz.awaitYapılandırmanın geçerli işlev çağrısını engellemeden yenilenmesini tercih ediyorsanız işleci kaldırın. Bu durumda, sonraki Işlev çağrıları güncelleştirilmiş değeri alır.public async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); await _configurationRefresher.TryRefreshAsync(); string keyName = "TestApp:Settings:Message"; string message = _configuration[keyName]; return message != null ? (ActionResult)new OkObjectResult(message) : new BadRequestObjectResult($"Please create a key-value with the key '{keyName}' in App Configuration."); }
İşlevi yerel olarak test etme
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'İşlevinizi test etmek için F5’e basın. istenirse, Azure işlevleri çekirdek (clı) araçlarını indirmek ve yüklemek için Visual Studio isteği kabul edin. Ayrıca, araçların HTTP isteklerini işleyebilmesi için bir güvenlik duvarı özel durumu etkinleştirmeniz gerekebilir.
Azure İşlevleri çalışma zamanı çıktısından işlevinizin URL'sini kopyalayın.

HTTP isteğinin URL’sini tarayıcınızın adres çubuğuna yapıştırın. Aşağıdaki görüntüde, bu işlevin döndürdüğü yerel GET isteğine tarayıcıda yapılan yanıt gösterilmektedir.

Azure Portal’ında oturum açın. Tüm kaynaklar' ı seçin ve hızlı başlangıçta oluşturduğunuz uygulama yapılandırma deposunu seçin.
Yapılandırma Gezgini' ni seçin ve aşağıdaki anahtarın değerini güncelleştirin:
Anahtar Değer TestApp: Ayarlar: ileti Azure Uygulama yapılandırmasından alınan veriler-güncelleştirildi Daha sonra Sentinel anahtarını oluşturun veya zaten mevcutsa değeri değiştirin, örneğin
Anahtar Değer TestApp: Ayarlar: Sentinel v1 Tarayıcıyı birkaç kez yenileyin. Önbelleğe alınan ayarın süresi 30 saniye sonra dolarsa, sayfa, güncelleştirilmiş değer ile Işlev çağrısının yanıtını gösterir.

Not
bu öğreticide kullanılan örnek kod, uygulama yapılandırma GitHub deposundanindirilebilir.
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 Azure Işlevleri 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.