Сохраните изменения разделов IConfigurationRoot в файле *.json в .net Core 2.2.C#

Место общения программистов C#
Ответить
Anonymous
 Сохраните изменения разделов IConfigurationRoot в файле *.json в .net Core 2.2.

Сообщение Anonymous »

Я искал решение, но не смог его найти, держу пари, что кто-то сталкивался с этой проблемой, так в чем же проблема?

Для теста я создал простое консольное приложение (решение будет использоваться в основном веб-API asp.net).

У меня есть файл конфигурации TestSetting.json с параметром «Копировать всегда» настроено.

Код: Выделить всё

{
"setting1" : "value1"
}
И простой код

Код: Выделить всё

IConfigurationBuilder configurationBuilder = new ConfigurationBuilder();

IConfigurationRoot configuration = configurationBuilder.AddJsonFile("TestSettings.json",false, reloadOnChange: true).Build();

Console.WriteLine(configuration.GetSection("setting1").Value); // Output: value1
//Change configuration manually in file while console is waiting
Console.ReadKey();

//Changed manually in file Value appears
Console.WriteLine(configuration.GetSection("setting1").Value); // Output: Whatever you have setuped
Console.ReadKey();

configuration.GetSection("setting1").Value = "changed from code";
//Changed in code value appear
Console.WriteLine(configuration.GetSection("setting1").Value); // Output: changed from code
У меня есть 2 требования: я хочу, чтобы можно было вручную изменять значение в файле конфигурации json во время работы приложения, и приложение увидит обновленное значение во время следующего получения раздела настроек. и это работает.

Второе требование заключается в том, что я хочу сохранить некоторую информацию, а точнее время последнего выполнения задачи, которая должна выполняться один раз за установленный период, например . один раз в день, поэтому некоторый цикл проверяет значение последнего времени выполнения и определяет, нужно ли выполнять операцию. Кто-то спросит, будет ли работать то, что у меня есть, но мне также нужно охватить сценарий, когда операция была выполнена и приложение перезапущено (ошибка сервера, перезапуск пользователя и т. д.), и мне нужно сохранить эту информацию таким образом, чтобы я мог чтобы прочитать его после запуска приложения.

Читая пример кода, мы видим, что после изменения параметра 1 в коде мы видим, что этот раздел был изменен при попытке вывести его на консоль.

Код: Выделить всё

configuration.GetSection("setting1").Value = "changed from code";
//Changed in code value appear
Console.WriteLine(configuration.GetSection("setting1").Value); // Output: changed from code
Вот и вопрос :). Возможно ли, что это изменение раздела настроек также повлияет на фактическое значение в файле JSON? Я не хочу вручную изменять этот файл какими-либо авторами потоков или кем-то еще.

Фактический результат таков: после изменения значения в коде новое значение можно получить во время выполнения, но когда вы перейдете к отладке двоичных файлов, вы увидите, что значение 1 в файле TestSettings.json не было изменено.

Подробнее здесь: https://stackoverflow.com/questions/579 ... t-core-2-2
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»