Öğretici: ASP.NET web uygulamasında dinamik yapılandırma kullanma (.NET Framework)

Uygulama Yapılandırması verileri .NET Framework bir uygulamada Uygulama Ayarları olarak yüklenebilir. Daha fazla bilgi için bkz. hızlı başlangıç. Ancak, .NET Framework tarafından tasarlandığı gibi, Uygulama Ayarları yalnızca uygulama yeniden başlatıldığında yenilenebilir. .NET sağlayıcısı Uygulama Yapılandırması bir .NET Standard kitaplığıdır. Uygulamayı yeniden başlatmadan yapılandırmayı dinamik olarak önbelleğe almayı ve yenilemeyi destekler. Bu öğretici, ASP.NET Web Forms bir uygulamada dinamik yapılandırma güncelleştirmelerini nasıl uygulayabileceğinizi gösterir. Aynı teknik .NET Framework MVC uygulamaları için de geçerlidir.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:

  • Uygulama Yapılandırması deposundaki değişikliklere yanıt olarak yapılandırmasını güncelleştirmek için ASP.NET web uygulamanızı ayarlayın.
  • uygulamanıza isteklerde en son yapılandırmayı ekleyin.

Önkoşullar

Anahtar-değer ekleme

Aşağıdaki anahtar-değerlerini Uygulama Yapılandırması deposuna ekleyin ve Etiket ve İçerik Türü değerlerini varsayılan değerleriyle bırakın. Azure portal veya CLI kullanarak bir depoya anahtar-değer ekleme hakkında daha fazla bilgi için Anahtar-değer oluşturma bölümüne gidin.

Anahtar Değer
TestApp:Ayarlar:BackgroundColor Beyaz
TestApp:Ayarlar:FontColor Siyahi
TestApp:Ayarlar:FontSize 40
TestApp:Ayarlar:İleti Azure Uygulama Yapılandırması verileri
TestApp:Ayarlar:Sentinel v1

ASP.NET Web Uygulaması oluşturma

  1. Visual Studio'yu başlatın ve Yeni proje oluştur'u seçin.

  2. Proje şablonu listesinden C# ile ASP.NET Web Uygulaması 'nı (.NET Framework) seçin ve İleri'ye basın.

  3. Yeni projenizi yapılandırın alanına bir proje adı girin. Çerçeve'nin altında .NET Framework 4.7.2 veya üzerini seçin. Oluştur’a basın.

  4. Yeni ASP.NET Web Uygulaması oluştur bölümünde Web Forms'ı seçin. Oluştur’a basın.

Uygulama Yapılandırması'den verileri yeniden yükleme

  1. Projenize sağ tıklayın ve NuGet Paketlerini Yönet'i seçin. Gözat sekmesinde, aşağıdaki NuGet paketinin en son sürümünü arayın ve projenize ekleyin.

    Microsoft.Extensions.Configuration.AzureAppConfiguration

  2. Global.asax.cs dosyasını açın ve aşağıdaki ad alanlarını ekleyin.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  3. Sınıfına aşağıdaki statik üye değişkenlerini Global ekleyin.

    public static IConfiguration Configuration;
    private static IConfigurationRefresher _configurationRefresher;
    
  4. sınıfına Global bir Application_Start yöntem ekleyin. Yöntem zaten varsa aşağıdaki kodu ekleyin.

    protected void Application_Start(object sender, EventArgs e)
    {
        ConfigurationBuilder builder = new ConfigurationBuilder();
        builder.AddAzureAppConfiguration(options =>
        {
            options.Connect(Environment.GetEnvironmentVariable("ConnectionString"))
                    // Load all keys that start with `TestApp:` and have no label.
                    .Select("TestApp:*")
                    // Configure to reload configuration if the registered key 'TestApp:Settings:Sentinel' is modified.
                    .ConfigureRefresh(refresh => 
                    {
                        refresh.Register("TestApp:Settings:Sentinel", refreshAll:true)
                               .SetCacheExpiration(new TimeSpan(0, 5, 0));
                    });
            _configurationRefresher = options.GetRefresher();
        });
    
        Configuration = builder.Build();
    }
    

    Application_Start yöntemi, web uygulamanıza yapılan ilk istekte çağrılır. Uygulamanın yaşam döngüsü sırasında yalnızca bir kez çağrılır. Bu nedenle, nesnenizi IConfiguration başlatmak ve Uygulama Yapılandırması'dan veri yüklemek için iyi bir yerdir.

    yöntemindeConfigureRefresh, değişiklik izleme için Uygulama Yapılandırması deponuzdaki bir anahtar kaydedilir. refreshAll yönteminin Register parametresi, kayıtlı anahtar değişirse tüm yapılandırma değerlerinin yenilenmesi gerektiğini gösterir. Bu örnekte TestApp:Settings:Sentinel tuşu, diğer tüm anahtarların değiştirilmesini tamamladıktan sonra güncelleştirdiğiniz bir sentinel anahtarıdır . Bir değişiklik algılandığında, uygulamanız tüm yapılandırma değerlerini yeniler. Bu yaklaşım, tüm anahtarları değişiklikler için izlemeye kıyasla uygulamanızda yapılandırma tutarlılığını sağlamaya yardımcı olur.

    yöntemi, SetCacheExpiration yapılandırma değişikliklerini denetlemek için Uygulama Yapılandırması 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 geçersiz kılarsınız ve bunun yerine 5 dakikalık bir süre belirtirsiniz. Uygulama Yapılandırması deponuza yapılan olası istek sayısını azaltır.

  5. sınıfına Global bir Application_BeginRequest yöntem ekleyin. Yöntem zaten varsa aşağıdaki kodu ekleyin.

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        _ = _configurationRefresher.TryRefreshAsync();
    }
    

    Yöntemin ConfigureRefresh tek başına çağrılması, yapılandırmanın otomatik olarak yenilenmesine neden olmaz. Yenileme sinyali TryRefreshAsync vermek için her isteğin başında yöntemini çağırırsınız. Bu tasarım, uygulamanızın yalnızca etkin olarak istek aldığında Uygulama Yapılandırması istekleri göndermesini sağlar.

    Çağrı TryRefreshAsync , yapılandırılan önbellek süre sonu süresi dolmadan önce bir işlevsizdir, bu nedenle performans etkisi en düşük düzeydedir. Uygulama Yapılandırması bir istek yapıldığında, görevi beklemediğiniz için yapılandırma geçerli isteğin yürütülmesini engellemeden zaman uyumsuz olarak yenilenir. Geçerli istek güncelleştirilmiş yapılandırma değerlerini alamayabilir, ancak sonraki istekler bunu yapar.

    Çağrı TryRefreshAsync herhangi bir nedenle başarısız olursa uygulamanız önbelleğe alınmış yapılandırmayı kullanmaya devam eder. Yapılandırılan önbellek süre sonu süresi yeniden geçtiğinde ve TryRefreshAsync çağrı uygulamanıza yapılan yeni bir istek tarafından tetiklendiğinde başka bir deneme yapılır.

En son yapılandırma verilerini kullanma

  1. Default.aspx dosyasını açın ve içeriğini aşağıdaki işaretlemeyle değiştirin. Inherits özniteliğinin uygulamanızın ad alanı ve sınıf adıyla eşleştiğinden emin olun.

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebFormApp.Default" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Azure App Configuration Web Forms Demo</title>
    </head>
    <body id="body" runat="server">
        <form id="form1" runat="server">
            <div style="text-align: center">
                <asp:Label ID="message" runat="server" />
            </div>
        </form>
    </body>
    </html>
    
  2. Default.aspx.cs dosyasını açın ve aşağıdaki kodla güncelleştirin.

    using System;
    using System.Web.UI.WebControls;
    
    namespace WebFormApp
    {
        public partial class Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                // Read configuration from the IConfiguration object loaded from Azure App Configuration
                string messageText = Global.Configuration["TestApp:Settings:Message"] ?? "Please add the key \"TestApp:Settings:Message\" in your Azure App Configuration store.";
                string messageFontSize = Global.Configuration["TestApp:Settings:FontSize"] ?? "20";
                string messageFontColor = Global.Configuration["TestApp:Settings:FontColor"] ?? "Black";
                string backgroundColor = Global.Configuration["TestApp:Settings:BackgroundColor"] ?? "White";
    
                message.Text = messageText;
                message.Font.Size = FontUnit.Point(int.Parse(messageFontSize));
                message.ForeColor = System.Drawing.Color.FromName(messageFontColor);
                body.Attributes["bgcolor"] = backgroundColor;
            }
        }
    }
    

Uygulamayı derleme ve çalıştırma

  1. ConnectionString adlı bir ortam değişkenini, Uygulama Yapılandırması deposu oluşturma sırasında elde edilen salt okunur anahtar bağlantı dizesine ayarlayın.

    Windows komut istemini kullanıyorsanız aşağıdaki komutu çalıştırı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"
    
  2. Değişikliğin etkili olması için Visual Studio'yu yeniden başlatın.

  3. Web uygulamasını derlemek ve çalıştırmak için Ctrl + F5 tuşlarına basın.

    Yerel uygulama başlatma

  4. Azure portal Uygulama Yapılandırması deponuzun Yapılandırma gezginine gidin ve aşağıdaki anahtarların değerini güncelleştirin. Sonunda TestApp:Settings:Sentinel sentinel anahtarını güncelleştirmeyi unutmayın.

    Anahtar Değer
    TestApp:Ayarlar:BackgroundColor Yeşil
    TestApp:Ayarlar:FontColor LightGray
    TestApp:Ayarlar:İleti Azure Uygulama Yapılandırması verileri - artık canlı güncelleştirmelerle!
    TestApp:Ayarlar:Sentinel v2
  5. Yeni yapılandırma ayarlarını görmek için tarayıcı sayfasını yenileyin. Değişikliklerin yansıtılması veya önbellek süre sonu sürenizin 5 dakikadan kısa olması için birden çok kez yenilemeniz gerekebilir.

    Yerel uygulama yenileme

Not

Bu öğreticide kullanılan örnek kodu Azure Uygulama Yapılandırması GitHub deposundan indirebilirsiniz.

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ı tutmak istediğiniz diğer kaynakları içeren bir kaynak grubu içinde oluşturduysanız, kaynak grubunu silmek yerine her kaynağı kendi bölmesinden tek tek silin.

  1. Azure portal oturum açın ve Kaynak grupları'nı seçin.
  2. Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
  3. Sonuç listesinde, bir genel bakış görmek için kaynak grubu adını seçin.
  4. Kaynak grubunu sil'i seçin.
  5. 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, ASP.NET Web Forms uygulamanızın yapılandırma ayarlarını Uygulama Yapılandırması dinamik olarak yenilemesini etkinleştirmişsiniz. bir .NET Framework uygulamasında dinamik yapılandırmayı etkinleştirmeyi öğrenmek için sonraki öğreticiye geçin:

Azure yönetilen kimliğini kullanarak Uygulama Yapılandırması erişimini kolaylaştırmayı öğrenmek için sonraki öğreticiye geçin: