Я только начинаю работу с .net Core 2.1, и я написал собственный ConfigurationProvider, который загружает мою конфиденциальную конфигурацию из отдельного файла. Это прекрасно работает с жестко заданным путем, но я также хочу, чтобы местоположение файла было сохранено в конфигурации. Если я пытаюсь получить доступ к конфигурации appsettings во время настройки моего провайдера, значения не отображаются. Предположительно, это потому, что я все еще на этапе настройки. Есть ли способ получить к ним доступ или потерпеть неудачу, и есть ли способ добавить другого поставщика конфигурации в Startup.cs вместо Program.cs?
Вот что я пытаюсь сделать:
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
return WebHost.CreateDefaultBuilder(args)
.ConfigureLogging((hostingContext, logging) =>
{
logging.ClearProviders();
logging.AddConsole();
logging.AddFile(opts =>
{
hostingContext.Configuration.GetSection("FileLoggerOptions").Bind(opts);
});
})
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath);
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
config.AddJsonFile($"appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json", optional: true);
config.AddEncryptedFile(hostingContext.Configuration["SecureSettingsFile"], true, true);
})
.UseStartup<Startup>();
}
Как вы видите, я могу получить доступ к конфигурации в конфигурации журнала, но не к конфигурации приложения. Мой провайдер - AddEncryptedFile
бит, и hostingContext.Configuration["SecureSettingsFile"]
должен прочитать значение из appsettings.json.
Единственная конфигурация, доступная на этом этапе, - это переменные среды, и я не хочу использовать их, поскольку на сервере имеется около 30 веб-сайтов.
Возможно ли то, что я пытаюсь сделать, или мне придется использовать переменную окружения или сохранить мою зашифрованную конфигурацию в том же месте, что и мой веб-сайт?
спасибо