[英]How to add configuration in .NET 6 Program.cs only?
On an AspNetCore 5 Web and API Projects I had the following on Program files:在 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;
}
}
Now I am moving this code to NET 6 using Program.cs
without Startup.cs
:现在我使用
Program.cs
将这段代码移到 NET 6 中,而没有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();
Question问题
Can I set configuration in builder.Configuration
or should I do it inside ConfigureWebHostDefaults?我可以在
builder.Configuration
中设置配置,还是应该在 ConfigureWebHostDefaults 中设置?
Should I use builder.Host.UserSerilog
or add Serilog in ConfigureWebHostDefaults
?我应该使用
builder.Host.UserSerilog
还是在ConfigureWebHostDefaults
添加 Serilog ?
It's a bit confusing because I can do things in different ways.这有点令人困惑,因为我可以用不同的方式做事。
The new hosting model uses WebApplicationBuilder
to configure the web-host defaults, so there's no need for you to call this yourself. 新主机 model使用
WebApplicationBuilder
来配置 web 主机默认值,因此您无需自己调用它。
Can I set configuration in
builder.Configuration
or should I do it insideConfigureWebHostDefaults
?我可以在
builder.Configuration
中设置配置还是应该在ConfigureWebHostDefaults
中进行配置?
Do this using builder.Configuration
.使用
builder.Configuration
执行此操作。
Should I use
builder.Host.UserSerilog
or add Serilog inConfigureWebHostDefaults
?我应该使用
builder.Host.UserSerilog
还是在ConfigureWebHostDefaults
添加 Serilog ?
Do this using builder.Host
.使用
builder.Host
执行此操作。 Nicholas Blumhardt demonstrates this in Setting up Serilog in .NET 6 . Nicholas Blumhardt 在Setting up Serilog in .NET 6 中演示了这一点。
It's a bit confusing because I can do things in different ways.
这有点令人困惑,因为我可以用不同的方式做事。
There's a strong need for backwards compatibility, especially as .NET 6 apps aren't required to use the new hosting model.非常需要向后兼容性,特别是因为 .NET 6 应用程序不需要使用新的托管 model。 This results in a few different approaches being available to you.
这导致您可以使用几种不同的方法。 I expect this is something that will change with future releases, but that's merely speculation on my part.
我预计这会随着未来的发布而改变,但这只是我的猜测。
1. Can I set configuration in builder.Configuration
or should I do it inside ConfigureWebHostDefaults
? 1. 我可以在
builder.Configuration
中设置配置,还是应该在ConfigureWebHostDefaults
中设置?
To manage configuration you should use ConfigurationManager
exposed by builder.Configuration
:要管理配置,您应该使用
builder.Configuration
公开的ConfigurationManager
:
builder.Configuration
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("settings.json", false, true)
.AddJsonFile($"settings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", false, true)
.AddEnvironmentVariables();
2. Should I use builder.Host.UserSerilog
or add Serilog
in ConfigureWebHostDefaults
2.我应该使用
builder.Host.UserSerilog
还是在ConfigureWebHostDefaults
中添加Serilog
From Nicholas Blumhardt's (one of the Serilog maintainers) github sample use builder.Host
:来自 Nicholas Blumhardt(Serilog 维护者之一)的github 示例使用
builder.Host
:
builder.Host.UseSerilog((ctx, lc) => // Serilog setup here, use ctx.Configuration for config);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.