Я пишу WebApi для отслеживания действий моего щенка (небольшие перерывы, обучение ящиков и т. Д. c). API имеет интерфейсный компонент, написанный на Blazor, но это не является частью этого вопроса.
В моих проектах github я никогда не использую файл appsettings. json из-за боязни случайного его передачи и, таким образом, раскрытия каких-либо секретов. Вместо этого я хотел добавить свой собственный файл appsettings следующим образом:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(config => {
var basePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var fileName = "puppytrackersettings.json";
var fullPath = Path.Combine(basePath, fileName);
if(File.Exists(fullPath))
{
config.SetBasePath(basePath);
config.AddJsonFile(fileName, optional: true);
}
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
Таким образом, файл настроек можно сохранить в папке «Мои документы» («/» на linux), надежно заправив далеко от исходного кода.
ПРОБЛЕМА Проблема заключается в том, что конфигурация обновляется только с этим добавленным файлом json в методе CreateHostBuilder () . Как только конфигурация активируется в Startup.cs , конфигурация возвращается к конфигурации по умолчанию. Я вижу, что для обеспечения конфигурации перед входом в CreateHostBuilder () устанавливается значение 5, затем он увеличивается до 6 после добавления моего json файла, но затем, когда запускается Startup.ConfigureServices () , Конфигурация снова вернулась к 5.
Я пробовал множество способов создания конфигурации для webapi, но ни один из них не работает.
ВРЕМЕННОЕ РЕШЕНИЕ Пока что мой обходной путь - использовать секреты приложений в VS, но поскольку некоторые параметры, такие как ключ телеметрии Application Insights, являются общими, выполнить репликацию через все микросервисы очень сложно, поскольку я не могу указать на существующее приложение секрет.
Кто-нибудь знает, что я делаю неправильно, или как это сделать правильно?
Версия. Net Ядро 3.1.101 Visual Studio: 16.4.5