Kestrel: Varsayılan olarak algılanan çalışma zamanında yapılandırma değişiklikleri
Kestrel artık çalışma zamanında proje örneğinin Kestrel
bölümünde yapılan değişikliklere (örneğin, appsettings.json) tepki IConfiguration
gösteriyor. appsettings.json kullanarak Kestrel'i yapılandırma hakkında daha fazla bilgi edinmek için Uç nokta yapılandırması'ndaki appsettings.json örneğine bakın.
Kestrel, bu yapılandırma değişikliklerine tepki vermek için uç noktaları gerektiği şekilde bağlar, bağlar ve yeniden bağlar.
Tartışma için bkz. sorun dotnet/aspnetcore#22807.
Sürüm kullanıma sunulmuştur
5.0 Önizleme 7
Eski davranış
ASP.NET Core 5.0 Preview 6'ya başlamadan önce Kestrel çalışma zamanında yapılandırmayı değiştirmeyi desteklemiyordu.
ASP.NET Core 5.0 Preview 6'da, çalışma zamanında yapılandırma değişikliklerine tepki vermenin artık varsayılan davranışını seçebilirsiniz. Gerekli bağlama Kestrel'in yapılandırmasını el ile kabul etme:
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
public class Program
{
public static void Main(string[] args) =>
CreateHostBuilder(args).Build().Run();
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseKestrel((builderContext, kestrelOptions) =>
{
kestrelOptions.Configure(
builderContext.Configuration.GetSection("Kestrel"), reloadOnChange: true);
});
webBuilder.UseStartup<Startup>();
});
}
Yeni davranış
Kestrel varsayılan olarak çalışma zamanında yapılandırma değişikliklerine tepki gösterir. Bu değişikliği desteklemek için ile ConfigureWebHostDefaults varsayılan olarak öğesini çağırır KestrelServerOptions.Configure(IConfiguration, bool)
reloadOnChange: true
.
Değişiklik nedeni
Sunucu tamamen yeniden başlatılmadan çalışma zamanında uç nokta yeniden yapılandırmayı desteklemek için değişiklik yapıldı. Tam sunucu yeniden başlatmanın aksine, değişmeyen uç noktalar geçici olarak bile ilişkisiz değildir.
Önerilen eylem
Kestrel'in varsayılan yapılandırma bölümünün çalışma zamanında değişmediği çoğu senaryoda bu değişikliğin hiçbir etkisi yoktur ve hiçbir eylem gerekmez.
Kestrel'in varsayılan yapılandırma bölümünün çalışma zamanında değiştiği ve Kestrel'in buna tepki vermesi gereken senaryolar için, bu artık varsayılan davranıştır.
Kestrel'in varsayılan yapılandırma bölümünün çalışma zamanında değiştiği ve Kestrel'in buna tepki vermemesi gereken senaryolar için, aşağıdaki gibi devre dışı bırakabilirsiniz:
using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; public class Program { public static void Main(string[] args) => CreateHostBuilder(args).Build().Run(); public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseKestrel((builderContext, kestrelOptions) => { kestrelOptions.Configure( builderContext.Configuration.GetSection("Kestrel"), reloadOnChange: false); }); webBuilder.UseStartup<Startup>(); }); }
Notlar:
Bu değişiklik, aşırı yüklemenin KestrelServerOptions.Configure(IConfiguration)
davranışını değiştirmez ve yine de davranışı varsayılan olarak kullanır reloadOnChange: false
.
Yapılandırma kaynağının yeniden yüklemeyi desteklediğinden emin olmak da önemlidir. JSON kaynakları için yeniden yükleme çağrılarak AddJsonFile(path, reloadOnChange: true)
yapılandırılır. Yeniden yükleme, appsettings.json ve uygulama ayarları için varsayılan olarak zaten yapılandırılmıştır.{ Environment}.json.
Etkilenen API’ler
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin