Aracılığıyla paylaş


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

Uygulama Yapılandırmasından alınan veriler bir .NET Framework uygulamasında 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. Uygulama Yapılandırması .NET sağlayıcısı, .NET Standart bir kitaplıktır. Uygulama yeniden başlatma olmadan yapılandırmayı dinamik olarak önbelleğe almayı ve yenilemeyi destekler. Bu öğretici, ASP.NET Bir Web Forms uygulamasında 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 aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • ASP.NET web uygulamanızı bir Uygulama Yapılandırma deposundaki değişikliklere yanıt olarak yapılandırmasını güncelleştirmek için ayarlayın.
  • İsteklerdeki en son yapılandırmayı uygulamanıza 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ını veya CLI'yı 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 siyah
TestApp:Ayarlar:FontSize 40
TestApp:Ayarlar:Mesaj Azure Uygulaması Yapılandırmasından Veriler

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 bölümüne bir proje adı girin. Framework'ün 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'u seçin. Oluştur’a basın.

Uygulama Yapılandırması'dan 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 paketlerinin en son sürümünü arayın ve projenize ekleyin.

    • Microsoft.Extensions.Configuration.AzureAppConfiguration
    • Azure.Identity
  2. Global.asax.cs dosyasını açın ve aşağıdaki ad alanlarını ekleyin.

    using Azure.Identity;
    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. Application_Start sınıfına bir Global yöntemi 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 =>
        {
            string endpoint = Environment.GetEnvironmentVariable("Endpoint"); 
            options.Connect(new Uri(endpoint), new DefaultAzureCredential())
                   // Load all keys that start with `TestApp:` and have no label.
                   .Select("TestApp:*")
                   // Reload configuration if any selected key-values have changed.
                   .ConfigureRefresh(refresh => 
                   {
                       refresh.RegisterAll()
                              .SetRefreshInterval(new TimeSpan(0, 5, 0));
                   });
            _configurationRefresher = options.GetRefresher();
        });
    
        Configuration = builder.Build();
    }
    

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

    ConfigureRefresh yönteminin içinde, seçilen anahtar-değerlerden herhangi birinde (RegisterAll ile başlayan ve etiketi olmayanlar) herhangi bir değişiklik algılandığında Uygulama Yapılandırma sağlayıcısına yapılandırmanın tamamını yeniden yüklemesini bildirmek için yöntemini çağırırsınız. 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, 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ırma deponuza yapılan olası istek sayısını azaltır.

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

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

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

    TryRefreshAsync çağrısı, yapılandırılan yenileme aralığı tamamlanmadan önce bir no-op olduğundan, performans etkisi çok azdır. Uygulama Yapılandırması'na bir istek yapıldığında, yapılandırma, mevcut isteğin yürütülmesini engellemeden, beklemeksizin 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ılmış yenileme aralığı yeniden aşıldığında ve uygulamanıza yeni bir istek gönderildiğinde TryRefreshAsync çağrısı tetiklenirse, başka bir girişimde bulunulacaktır.

En son yapılandırma verilerini kullanma

  1. Default.aspx 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 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. Ortam değişkeni ayarlayın.

    Adlı Endpoint bir ortam değişkenini, Azure portalındaki mağazanıza genel bakış bölümünde bulunan Uygulama Yapılandırma deponuzun uç noktasına 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>'
    
  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 ortamda uygulama başlatma

  4. Azure portalında, Uygulama Yapılandırma deponuzun Yapılandırma gezginine gidin ve aşağıdaki anahtarların değerini güncelleştirin.

    Anahtar Değer
    TestApp:Ayarlar:BackgroundColor Yeşil
    TestApp:Ayarlar:FontColor Açık gri
    TestApp:Ayarlar:Mesaj Azure Uygulama Yapılandırması'ndan alınan veriler - artık canlı güncelleştirmelerle!
  5. 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 yenileme aralığınızı 5 dakikadan kısa bir süreyle değiştirmeniz gerekebilir.

    Yerel uygulama yenileme

Uyarı

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

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.

  1. Azure portalında oturum açın ve Kaynak grupları'nı seçin.
  2. Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
  3. Genel bir bakış görmek için sonuç listesinde 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ı Uygulama Yapılandırması'ndan yapılandırma ayarlarını dinamik olarak yenilemek için etkinleştirmişsiniz. Bir .NET Framework uygulamasında dinamik yapılandırmayı etkinleştirmeyi öğrenmek için sonraki öğreticiye geçin:

Uygulama Yapılandırmasına erişimi kolaylaştırmak için Azure yönetilen kimliğini kullanmayı öğrenmek için sonraki öğreticiye geçin: