Я хочу добавить поля в IConfiguration, которую я дал моему WebHost во время его выполнения, а не только при запуске.
У меня есть несколько файлов, каждый из которых дает мне параметры соединения для отдельной базы данных. При запуске я загружаю эти файлы в конструктор конфигурации, чтобы использовать эту информацию для подключения к базе данных, указанной в запросе, отправленном в службу.
Но я хочу иметь возможность реагировать, если мне дают новые файлы во время выполнения. Поэтому я настроил FileSystemWatcher для просмотра папки, в которой могут появиться эти новые файлы. Я попытался прочитать новые файлы и добавить пару ключ / значение в конфигурацию, но, похоже, он не регистрирует изменение вне локального контекста:
IConfiguration _config;
[...]
foreach (KeyValuePair<string, string> entry in readFile)
{
_config[entry.Key] = entry.Value;
Console.WriteLine(_config[entry.Key]);
}
Это меняет содержимое _config в локальном контексте (Console.WriteLine(_config[entry.Key])
показывает правильный результат). Но если я попытаюсь прочитать его извне функции (например, в контроллере API), которая обрабатывает событие «обнаружен новый файл», я получу только пустую строку.