Is there a working method accessing configuration values during ConfigureServices()
in C# netCore? I have a dapr settings added as 'options pattern', but need the values in the same section immediately.
var builder = WebApplication.CreateBuilder(args);
builder.Host.ConfigureServices((ctx, services) =>
{
services.ConfigureOptions<DaprConfigConfigBinder>();
var daprSettings = ctx.Configuration.Get<DaprConfig>(); // ????
var daprClient = new DaprClientBuilder().UseGrpcEndpoint(daprSettings.gcprEndpoint).Build();
}
where
public class DaprConfig
{
[ConfigurationKeyName("stateStoreName")]
public string stateStoreName { get; set; } = null!;
[ConfigurationKeyName("gcprEndpoint")]
public string gcprEndpoint { get; set; } = null!;
}
internal class DaprConfigConfigBinder : IConfigureOptions<DaprConfig>
{
private const string SECTION_NAME = "Dapr";
private readonly IConfiguration config;
public DaprConfigConfigBinder(IConfiguration config)
{
this.config = config;
}
public void Configure(DaprConfig options)
{
this.config.GetSection(SECTION_NAME).Bind(options);
}
}
and appsettings.json
important part is:
{
"Dapr": {
"stateStoreName": "statestore",
"gcprEndpoint": "http://127.0.0.1:13109"
}
}
Thanks in advance!
I would do it like this:
var config= new DaprConfig();
builder.Configuration.GetSection("Dapr").Bind(config);