Нужно ли перезапустить службу Windows, если вы измените app.config? - PullRequest
37 голосов
/ 26 февраля 2009

Вам нужно перезапустить службу Windows, если вы измените app.config?

Ответы [ 6 ]

31 голосов
/ 26 февраля 2009

Да, вы делаете :

.Net framework прочитает app.config один раз и никогда больше не трогает app.config. Вот почему вы должны перезапустить приложение, чтобы получить изменения.

Почему .Net Framework не обнаруживает, что app.config изменился, и не обновляет все данные конфигурации?

Причина проста, это вообще невозможно.

Давайте воспользуемся логикой Рэймонда «представь, что это может быть сделано» здесь ...

10 голосов
/ 27 февраля 2009

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

  ConfigurationManager.RefreshSection("appSettings")
  sValue = ConfigurationManager.AppSettings(name)
8 голосов
/ 26 февраля 2009

Нет, у вас нет до. Но если вы хотите, чтобы изменения в app.config вступили в силу, вам может потребоваться перезапустить его. Или вы можете захотеть реализовать механизм наблюдения за конфигурационным файлом, который будет изменять настройки служб на лету.

4 голосов
/ 26 февраля 2009

Да.

Предположительно, вы имеете в виду файл appname.exe.config?

2 голосов
/ 27 февраля 2009

Обычно да. Однако вы можете написать службу Windows, которая поместит файловый монитор в файл конфигурации и обнаружит изменение и применит его без необходимости перезапуска.

Например, среда ведения журналов Log4Net предлагает такой механизм для своего файла конфигурации.

1 голос
/ 26 февраля 2009

Это выходит за рамки вопроса, но я предполагаю, что вы хотите вносить изменения только в какой-то раздел «для конкретного приложения» (appSettings и т. Д.).

Вам лучше написать свой собственный обработчик раздела конфигурации, который отслеживает его собственный файл конфигурации - подход nlog использует . Проверьте раздел « Автоматическая реконфигурация ».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...