1 минута

Как удобнее использовать конфигурацию из appsettings.json в ASP.NET

Допустим, есть такая секция в appsettings.json:

"SomeApp": {
    "Token": "***",
    "Secret": "***"
}

Как её удобнее внедрить в DI, чтобы потом использовать её объект напрямую, без использования IOptions?

Объявим класс для этой конфигурации с авто-свойствами:

public class SomeAppConfiguration
{
    public required string Token { get; set; }
    public required string Secret { get; set; }
}

Спарсим её, используя стандартные средства чтения конфигурации из Microsoft.Extensions.Configuration:

builder.Services.Configure<SomeAppConfiguration>(builder.Configuration.GetRequiredSection("SomeApp"));

А затем, использовав добавленный в DI этим вызовом IConfiguration<SomeAppConfiguration>, добавим ещё и просто SomeAppConfiguration:

builder.Services.AddSingleton(resolver => resolver.GetRequiredService<IOptions<SomeAppConfiguration>>().Value);

Теперь можно, например, используя MinimalAPI получать доступ к конфигурации так:

app.MapGet((SomeAppConfiguration config) => {});