Öğ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
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz bir tane oluşturun.
- bir Uygulama Yapılandırması mağazası. Mağaza oluşturma.
- Visual Studio
- .NET Framework 4.7.2 veya üzeri
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
Visual Studio'yu başlatın ve Yeni proje oluştur'u seçin.
Proje şablonu listesinden C# ile ASP.NET Web Uygulaması 'nı (.NET Framework) seçin ve İleri'ye basın.
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.
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
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
Global.asax.cs dosyasını açın ve aşağıdaki ad alanlarını ekleyin.
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration;
Sınıfına aşağıdaki statik üye değişkenlerini
Global
ekleyin.public static IConfiguration Configuration; private static IConfigurationRefresher _configurationRefresher;
sınıfına
Global
birApplication_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, nesneniziIConfiguration
başlatmak ve Uygulama Yapılandırması'dan veri yüklemek için iyi bir yerdir.yönteminde
ConfigureRefresh
, değişiklik izleme için Uygulama Yapılandırması deponuzdaki bir anahtar kaydedilir.refreshAll
yöntemininRegister
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.sınıfına
Global
birApplication_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 sinyaliTryRefreshAsync
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 veTryRefreshAsync
ç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
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>
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
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"
Değişikliğin etkili olması için Visual Studio'yu yeniden başlatın.
Web uygulamasını derlemek ve çalıştırmak için Ctrl + F5 tuşlarına basın.
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 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.
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.
- Azure portal oturum 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, 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: