Tutorial: Menggunakan konfigurasi dinamis di aplikasi ASP.NET Core
Tutorial ini menunjukkan bagaimana Anda dapat mengaktifkan pembaruan konfigurasi dinamis di aplikasi ASP.NET Core. Tutorial dibangun pada aplikasi web yang diperkenalkan di panduan mulai cepat. Aplikasi Anda akan memanfaatkan pustaka penyedia App Configuration untuk kemampuan penembolokan dan refresh konfigurasi bawaannya. Sebelum melanjutkan, selesaikan Membuat aplikasi ASP.NET Core dengan App Configuration terlebih dahulu.
Dalam tutorial ini, Anda akan mempelajari cara:
- Siapkan aplikasi Anda untuk memperbarui konfigurasinya sebagai respons terhadap perubahan di penyimpanan App Configuration.
- Masukkan konfigurasi terbaru ke dalam aplikasi Anda.
Prasyarat
Selesaikan mulai cepat: Membuat aplikasi ASP.NET Core dengan App Configuration.
Menambahkan kunci sentinel
Kunci sentinel adalah kunci yang Anda perbarui setelah menyelesaikan perubahan semua kunci lainnya. Aplikasi Anda memantau kunci sentinel. Saat perubahan terdeteksi, aplikasi Anda me-refresh semua nilai konfigurasi. Pendekatan ini membantu memastikan konsistensi konfigurasi di aplikasi Anda dan mengurangi jumlah keseluruhan permintaan yang dibuat ke penyimpanan App Configuration Anda, dibandingkan dengan memantau semua kunci untuk perubahan.
- Di portal Azure, buka penyimpanan App Configuration Anda dan pilih Configuration Explorer > Create > Key-value.
- Untuk Kunci, masukkan TestApp:Settings:Sentinel. Untuk Nilai, masukkan 1. Biarkan Label dan Jenis konten kosong.
- Pilih Terapkan.
Memuat ulang data dari Azure App Configuration
Buka Program.cs, dan perbarui metode yang
AddAzureAppConfiguration
Anda tambahkan sebelumnya selama mulai cepat.// Load configuration from Azure App Configuration builder.Configuration.AddAzureAppConfiguration(options => { options.Connect(connectionString) // Load all keys that start with `TestApp:` and have no label .Select("TestApp:*", LabelFilter.Null) // Configure to reload configuration if the registered sentinel key is modified .ConfigureRefresh(refreshOptions => refreshOptions.Register("TestApp:Settings:Sentinel", refreshAll: true)); });
Metode
Select
ini digunakan untuk memuat semua nilai kunci yang nama kuncinya dimulai dengan TestApp: dan yang tidak memiliki label. Anda dapat memanggilSelect
metode lebih dari sekali untuk memuat konfigurasi dengan awalan atau label yang berbeda. Jika Anda berbagi satu penyimpanan App Configuration dengan beberapa aplikasi, pendekatan ini membantu memuat konfigurasi hanya relevan dengan aplikasi Anda saat ini alih-alih memuat semuanya dari penyimpanan Anda.Dalam metode ini
ConfigureRefresh
, Anda mendaftarkan kunci yang ingin Anda pantau untuk perubahan di penyimpanan App Configuration Anda. ParameterrefreshAll
keRegister
metode menunjukkan bahwa semua konfigurasi yang Anda tentukan olehSelect
metode akan dimuat ulang jika kunci terdaftar berubah.Tip
Anda dapat menambahkan panggilan ke
refreshOptions.SetCacheExpiration
metode untuk menentukan waktu minimum antara refresh konfigurasi. Dalam contoh ini, Anda menggunakan nilai default 30 detik. Sesuaikan dengan nilai yang lebih tinggi jika Anda perlu mengurangi jumlah permintaan yang dibuat ke penyimpanan App Configuration Anda.Tambahkan middleware Azure App Configuration ke kumpulan layanan aplikasi Anda.
Perbarui Program.cs dengan kode berikut.
// Existing code in Program.cs // ... ... builder.Services.AddRazorPages(); // Add Azure App Configuration middleware to the container of services. builder.Services.AddAzureAppConfiguration(); // Bind configuration "TestApp:Settings" section to the Settings object builder.Services.Configure<Settings>(builder.Configuration.GetSection("TestApp:Settings")); var app = builder.Build(); // The rest of existing code in program.cs // ... ...
Panggil
UseAzureAppConfiguration
metode. Ini memungkinkan aplikasi Anda untuk menggunakan middleware App Configuration untuk memperbarui konfigurasi untuk Anda secara otomatis.Perbarui Program.cs dengan kode berikut.
// Existing code in Program.cs // ... ... var app = builder.Build(); if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); app.UseHsts(); } // Use Azure App Configuration middleware for dynamic configuration refresh. app.UseAzureAppConfiguration(); // The rest of existing code in program.cs // ... ...
Anda telah menyiapkan aplikasi untuk menggunakan pola opsi di ASP.NET Core selama mulai cepat. Saat konfigurasi mendasar aplikasi Anda diperbarui dari App Configuration, objek anda yang sangat di ketik Settings
yang diperoleh melalui IOptionsSnapshot<T>
diperbarui secara otomatis. Perhatikan bahwa Anda tidak boleh menggunakan IOptions<T>
pembaruan konfigurasi dinamis jika diinginkan karena tidak membaca data konfigurasi setelah aplikasi dimulai.
Refresh konfigurasi berbasis permintaan
Refresh konfigurasi dipicu oleh permintaan masuk ke aplikasi web Anda. Tidak ada refresh yang akan terjadi jika aplikasi Anda diam. Saat aplikasi Anda aktif, middleware App Configuration memantau kunci sentinel, atau kunci lain yang Anda daftarkan untuk refresh dalam ConfigureRefresh
panggilan. Middleware dipicu pada setiap permintaan masuk ke aplikasi Anda. Namun, middleware hanya akan mengirim permintaan untuk memeriksa nilai dalam App Configuration saat waktu kedaluwarsa cache yang Anda tetapkan telah berlalu.
- Jika permintaan ke App Configuration untuk deteksi perubahan gagal, aplikasi Anda akan terus menggunakan konfigurasi cache. Upaya baru untuk memeriksa perubahan akan dilakukan secara berkala sementara ada permintaan masuk baru ke aplikasi Anda.
- Refresh konfigurasi terjadi secara asinkron dengan pemrosesan permintaan masuk aplikasi Anda. Ini tidak akan memblokir atau memperlambat permintaan masuk yang memicu refresh. Permintaan yang memicu refresh mungkin tidak mendapatkan nilai konfigurasi yang diperbarui, tetapi nantinya permintaan akan mendapatkan nilai konfigurasi baru.
- Untuk memastikan middleware dipicu, panggil
app.UseAzureAppConfiguration()
metode sedini mungkin di alur permintaan Anda sehingga middleware lain tidak akan melewatinya di aplikasi Anda.
Membangun dan menjalankan aplikasi secara lokal
Untuk membangun aplikasi dengan menggunakan .NET CLI, jalankan perintah berikut di shell perintah:
dotnet build
Setelah pembangunan berhasil diselesaikan, jalankan perintah berikut dengan tujuan menjalankan aplikasi secara lokal:
dotnet run
Buka jendela browser, dan buka URL yang diperlihatkan dalam output
dotnet run
.Masuk ke portal Azure. Pilih Semua sumber daya, lalu pilih instans penyimpanan Azure App Configuration yang Anda buat di mulai cepat.
Pilih Penjelajah konfigurasi, dan perbarui nilai kunci berikut. Ingatlah untuk memperbarui tombol sentinel pada akhirnya.
Tombol Nilai TestApp:Settings:BackgroundColor hijau TestApp:Settings:FontColor lightGray TestApp:Pengaturan:Pesan Data dari Azure App Configuration - sekarang dengan pembaruan langsung! TestApp:Pengaturan:Sentinel 2 Refresh browser beberapa kali. Saat cache kedaluwarsa setelah 30 detik, halaman akan ditampilkan dengan konten yang diperbarui.
Pengelogan dan pemantauan
Log adalah output setelah refresh konfigurasi dan berisi informasi terperinci tentang nilai kunci yang diambil dari penyimpanan App Configuration dan perubahan konfigurasi yang dibuat pada aplikasi Anda.
Default
ILoggerFactory
ditambahkan secara otomatis saatservices.AddAzureAppConfiguration()
dipanggil. Penyedia App Configuration menggunakan iniILoggerFactory
untuk membuat instansILogger
, yang menghasilkan log ini. ASP.NET Core menggunakanILogger
untuk pengelogan secara default, sehingga Anda tidak perlu membuat perubahan kode tambahan untuk mengaktifkan pengelogan untuk penyedia App Configuration.Log adalah output pada tingkat log yang berbeda. Tingkat default adalah
Information
.Tingkat log Deskripsi Debug Log menyertakan kunci dan label kunci-nilai yang dipantau aplikasi Anda untuk perubahan dari penyimpanan App Configuration Anda. Informasi ini juga mencakup apakah nilai kunci telah berubah dibandingkan dengan apa yang telah dimuat aplikasi Anda. Aktifkan log pada tingkat ini untuk memecahkan masalah aplikasi Anda jika perubahan konfigurasi tidak terjadi seperti yang diharapkan. Informasi Log menyertakan kunci pengaturan konfigurasi yang diperbarui selama refresh konfigurasi. Nilai pengaturan konfigurasi dihilangkan dari log untuk menghindari kebocoran data sensitif. Anda dapat memantau log pada tingkat ini untuk memastikan aplikasi Anda mengambil perubahan konfigurasi yang diharapkan. Peringatan Log mencakup kegagalan dan pengecualian yang terjadi selama refresh konfigurasi. Kejadian sesekali dapat diabaikan karena penyedia konfigurasi akan terus menggunakan data yang di-cache dan mencoba menyegarkan konfigurasi lain kali. Anda dapat memantau log pada tingkat ini untuk peringatan berulang yang mungkin menunjukkan potensi masalah. Misalnya, Anda memutar string koneksi tetapi lupa memperbarui aplikasi Anda. Anda dapat mengaktifkan pengelogan
Debug
di tingkat log dengan menambahkan contoh berikut ke file Andaappsettings.json
. Contoh ini juga berlaku untuk semua tingkat log lainnya."Logging": { "LogLevel": { "Microsoft.Extensions.Configuration.AzureAppConfiguration": "Debug" } }
Kategori pengelogan adalah
Microsoft.Extensions.Configuration.AzureAppConfiguration.Refresh
, yang muncul sebelum setiap log. Berikut adalah beberapa contoh log di setiap tingkat log:dbug: Microsoft.Extensions.Configuration.AzureAppConfiguration.Refresh[0] Key-value read from App Configuration. Change:'Modified' Key:'ExampleKey' Label:'ExampleLabel' Endpoint:'https://examplestore.azconfig.io' info: Microsoft.Extensions.Configuration.AzureAppConfiguration.Refresh[0] Setting updated. Key:'ExampleKey' warn: Microsoft.Extensions.Configuration.AzureAppConfiguration.Refresh[0] A refresh operation failed while resolving a Key Vault reference. Key vault error. ErrorCode:'SecretNotFound' Key:'ExampleKey' Label:'ExampleLabel' Etag:'6LaqgBQM9C_Do2XyZa2gAIfj_ArpT52-xWwDSLb2hDo' SecretIdentifier:'https://examplevault.vault.azure.net/secrets/ExampleSecret'
Menggunakan ILogger
adalah metode yang disukai dalam aplikasi ASP.NET dan diprioritaskan sebagai sumber pengelogan ILoggerFactory
jika instans ada. Namun, jika ILoggerFactory
tidak tersedia, log dapat diaktifkan dan dikonfigurasi melalui instruksi untuk aplikasi .NET Core. Untuk informasi selengkapnya, lihat pengelogan di .NET Core dan ASP.NET Core.
Catatan
Pengelogan tersedia jika Anda menggunakan versi 6.0.0 atau yang lebih baru dari salah satu paket berikut.
Microsoft.Extensions.Configuration.AzureAppConfiguration
Microsoft.Azure.AppConfiguration.AspNetCore
Microsoft.Azure.AppConfiguration.Functions.Worker
Membersihkan sumber daya
Jika Anda tidak ingin terus menggunakan sumber daya yang dibuat dalam artikel ini, hapus grup sumber daya yang Anda buat di sini untuk menghindari biaya.
Penting
Penghapusan grup sumber daya tidak bisa dipulihkan. Grup sumber daya dan semua sumber daya yang ada di dalamnya akan dihapus secara permanen. Pastikan Anda tidak menghapus grup atau sumber daya yang salah secara tidak sengaja. Jika Anda membuat sumber daya untuk artikel ini dalam grup sumber daya yang ada yang berisi sumber daya lain yang ingin disimpan, hapus setiap sumber daya satu per satu dari panelnya masing-masing, bukan menghapus grup sumber daya.
- Masuk ke portal Azure, lalu pilih Grup sumber daya.
- Dalam kotak Filter menurut nama, masukkan nama grup sumber daya Anda.
- Dalam daftar hasil, pilih nama grup sumber daya untuk melihat gambaran umum.
- Pilih Hapus grup sumber daya.
- Anda akan diminta untuk mengonfirmasi penghapusan grup sumber daya. Masukkan nama grup sumber daya Anda untuk mengonfirmasi, dan pilih Hapus.
Setelah beberapa saat, grup sumber daya dan semua sumber dayanya akan dihapus.
Langkah berikutnya
Dalam tutorial ini, Anda mengaktifkan aplikasi ASP.NET Core untuk me-refresh pengaturan konfigurasi dari Azure App Configuration secara dinamis. Untuk mempelajari cara menggunakan identitas terkelola Azure untuk mempermudah akses ke Azure App Configuration, lanjutkan ke tutorial berikutnya.