在 AspNetCore 5 Web 和 API 專案中,我對程式檔案有以下內容:
public class Program {
private static IConfiguration Configuration { get; } = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("settings.json", false, true)
.AddJsonFile($"settings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", false, true)
.AddEnvironmentVariables()
.Build();
public static Int32 Main(String[] args) {
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(String[] args) {
IHostBuilder builder = Host.CreateDefaultBuilder(args);
builder
.UseSerilog()
.ConfigureWebHostDefaults(builder => {
builder
.UseConfiguration(Configuration)
.UseStartup<Startup>();
});
return builder;
}
}
現在我將此代碼移動到 NET 6 使用Program.cs而沒有Startup.cs:
WebApplicationBuilder builder = WebApplication.CreateBuilder();
builder.Configuration
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("settings.json", false, true)
.AddJsonFile($"settings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", false, true)
.AddEnvironmentVariables();
builder.Host.UseSerilog();
builder.Host.ConfigureWebHostDefaults(x => {
x.UseSerilog(); / ??
x.UseConfiguration(??); // ??
x.UseWebRoot("webroot");
});
await using WebApplication application = builder.Build();
問題
我
builder.Configuration可以在 ConfigureWebHostDefaults 中設定配置還是應該在 ConfigureWebHostDefaults 中進行配置?我應該使用
builder.Host.UserSerilog還是添加 SerilogConfigureWebHostDefaults?
這有點令人困惑,因為我可以用不同的方式做事。
uj5u.com熱心網友回復:
在新的托管模式使用WebApplicationBuilder配置的主網路默認值,所以沒有必要為你這個自稱。
我可以在
builder.Configuration里面設定配置還是應該在里面做ConfigureWebHostDefaults?
使用builder.Configuration.
我應該使用
builder.Host.UserSerilog還是添加 SerilogConfigureWebHostDefaults?
使用builder.Host. Nicholas Blumhardt 在在 .NET 6中設定 Serilog 中演示了這一點。
這有點令人困惑,因為我可以用不同的方式做事。
強烈需要向后兼容,特別是因為 .NET 6 應用程式不需要使用新的托管模型。這導致您可以使用幾種不同的方法。我希望這會隨著未來的版本而改變,但這只是我的猜測。
uj5u.com熱心網友回復:
1.我可以在builder.Configuration里面設定配置還是應該在里面做ConfigureWebHostDefaults?
要管理配置,您應該使用ConfigurationManager公開方式builder.Configuration:
builder.Configuration
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("settings.json", false, true)
.AddJsonFile($"settings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", false, true)
.AddEnvironmentVariables();
2.我應該使用builder.Host.UserSerilog或添加Serilog在ConfigureWebHostDefaults
來自 Nicholas Blumhardt(Serilog 維護者之一)的github 示例使用builder.Host:
builder.Host.UseSerilog((ctx, lc) => // Serilog setup here, use ctx.Configuration for config);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/384706.html
