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

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

Ответов (6)

да.

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

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

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

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

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

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

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

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

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

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

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

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

  ConfigurationManager.RefreshSection("appSettings")
  sValue = ConfigurationManager.AppSettings(name)