Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get Configuration value from IHostBuilder in Net 6

I am creating a Worker application using Net 6 and I have in 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());

In LoggerOptions I need to get Options and the ConnectionString from it.

I tried the following because that is what I do when using WebApplicationBuilder:

builder.Configuration.Get<Options>().ConnectionString

But this does not compile as it seems IHostBuilder does not have a Configuration property.

How can I do this?

like image 204
Miguel Moura Avatar asked Nov 22 '25 10:11

Miguel Moura


2 Answers

Simple example:

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");
}
like image 144
Zar Avatar answered Nov 23 '25 23:11

Zar


You can access it by using the configure services overload that accepts the HostBuilderContext. I don't typically use the LoggerBuilder:

IHost host = Host.CreateDefaultBuilder(args)
    .UseSerilog((context, loggerConfiguration) =>
    {
        loggerConfiguration.ReadFrom.Configuration(context.Configuration);
    })
    .Build();

await host.RunAsync();
like image 25
Matt R. Avatar answered Nov 24 '25 00:11

Matt R.



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!