Я создал хранилище конфигураций приложений Azure и получил ключи доступа (EndPoint, Id, Secret, ConnectionString).
Теперь из моего приложения .NET Core WebAPI я хочу прочитать конфигурации из Azure. Я перепробовал много подходов, которые нашел в Интернете, но ни один из них не работает.
Я уже добавил ссылки на необходимые библиотеки Nuget. Мой appsettings.json
:
{
"ConnectionString:AppConfig": "Endpoint=https://somewhere.azconfig.io;Id=Hidden;Secret=Hidden",
"EndPoint": "https://somewhere.azconfig.io"
}
В моем Program.cs
есть:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
var settings = config.Build();
config.AddAzureAppConfiguration(options =>
{
options.Connect(settings["ConnectionStrings:AppConfig"]);
});
})
.UseStartup<Startup>();
Тогда в моем Startup.cs
конструкторе:
public Startup(
IConfiguration configuration, ---> checked this but no Azure config data
IHostingEnvironment hostingEnv
)
{
var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
//this.Config = configuration;
var builder = new ConfigurationBuilder()
.SetBasePath(hostingEnv.ContentRootPath)
.AddJsonFile(...)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
И этогде я читаю конфигурации, но все значения null
public void ConfigureServices(IServiceCollection services)
{
var dbConnection = Configuration.GetSection("MyApp:Key1:Key2").Value; ---> get null
services.AddDbContext<MyDbContext>(options => options.UseSqlServer(dbConnection));
_jwtLifespan = Configuration.GetValue<int>("MyApp:Key3"); ----> get null
_jwtSecretKey = Configuration.GetSection("MyApp:Key4").Value; ----> get null
.....
}
Любой, пожалуйста, проверьте, что мне здесь не хватает, и предложите мне рабочее решение. Большое спасибо!