Mig*_*ura 19 c# asp.net-core .net-6.0
我正在使用 Net 6 创建一个 Worker 应用程序,并且在 Program.cs 中有:
IHostBuilder builder = Host.CreateDefaultBuilder(args);
builder.ConfigureHostConfiguration(x => {
x.AddJsonFile("settings.json", false, true);
x.AddJsonFile($"settings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", false, true);
x.AddEnvironmentVariables();
});
builder.UseSerilog(new LoggerBuilder(
new LoggerOptions {
ConnectionString = builder.Configuration.Get<Options>().ConnectionString
},
).CreateLogger());
Run Code Online (Sandbox Code Playgroud)
LoggerOptions我需要从中获取Options和ConnectionString得到。
我尝试了以下操作,因为这就是我在使用时所做的WebApplicationBuilder:
builder.Configuration.Get<Options>().ConnectionString
Run Code Online (Sandbox Code Playgroud)
但这无法编译,因为它似乎IHostBuilder没有配置属性。
我怎样才能做到这一点?
Zar*_*Zar 22
简单的例子:
var hostBuilder = Host.CreateDefaultBuilder(args);
hostBuilder.UseSerilog((hostContext, services) =>
{
var connectionString = hostContext.Configuration.GetConnectionString("MyConnectionString");
});
hostBuilder.ConfigureServices((hostContext, services) =>
{
var connectionString = hostContext.Configuration.GetConnectionString("MyConnectionString");
}
Run Code Online (Sandbox Code Playgroud)
您可以使用接受 HostBuilderContext 的配置服务重载来访问它。我通常不使用 LoggerBuilder:
IHost host = Host.CreateDefaultBuilder(args)
.UseSerilog((context, loggerConfiguration) =>
{
loggerConfiguration.ReadFrom.Configuration(context.Configuration);
})
.Build();
await host.RunAsync();
Run Code Online (Sandbox Code Playgroud)