Вы запускаете код из Visual Studio?По умолчанию CreateDefaultBuilder
использует Directory.GetCurrentDirectory()
, чтобы определить, из какой папки загружать файлы настроек.Когда вы работаете из Visual Studio, текущим каталогом является каталог вашего проекта, поэтому при запуске / отладке программы он находит правильный файл настроек.
Один из способов проверить это - перейти в командную строку изапустите ваши приложения, используя dotnet myapp.dll
.Если вы загружаете настройки из файла appsettings
, он не найдет файл, и настройки будут иметь значение null.
Если вы измените свойства файла appsettings
на copy if newer
и перестройте приложение,когда вы запускаете его из командной строки, он правильно найдет файл настроек.
Вы можете посмотреть, как веб-хост определяет, какие настройки использовать, просмотрев файл реализации .Но, короче говоря, dotnetcore будет использовать настройки в следующем порядке:
- appsettings.json
- переменные окружения
- командная строка
Документация для этого здесь
Итак, если есть настройки, которые могут измениться после развертывания приложения, вы можете перезаписать их через переменные окружения.Вы можете повторно развернуть файлы appsettings
, если хотите настроить их таким образом, но, по моему опыту, гораздо проще обрабатывать производственные параметры через переменные среды, возможно, с помощью стороннего инструмента, например, puppet.
Надеюсь, чтопомогает.