Подтвердить что ты не робот

Файл конфигурации Windows Service С#

Я разработал приложение для Windows-приложений с помощью Visual Studio 2008/С#.

У меня есть файл app.config в проекте. Когда установлен, файл app.exe.config появляется рядом с исполняемым файлом, но кажется, что он не читает значения из него при попытке получить к ним доступ через ConfigurationManager.AppSettings.

Скопировал ли он файл конфигурации в другом месте или есть какая-то другая проблема, о которой я не знаю?

Спасибо заранее,

Martin.

Изменить: Имя файла конфигурации - infact my_exe_file_name.exe.config, это выглядит так:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>

    <add key="RuntimeFrequency" value="3" />

  </appSettings>
</configuration>

и я пытаюсь читать через:

ConfigurationManager.AppSettings["RuntimeFrequency"]

Значение отладки, которое я постоянно вижу, равно "1", а не "3". Я здесь что-то не так?

4b9b3361

Ответ 1

Я нашел ошибку, и она была связана с разрешениями на файлы. После установки службы у моей локальной учетной записи пользователя не было доступа для изменения файла app.exe.config.

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

Решенный теперь, спасибо всем.

Martin.

Ответ 2

Когда вы находитесь в режиме отладки, проверьте и посмотрите, какие настройки находятся в файле my_exe_file_name.vshost.exe.config. Также убедитесь, что вы настроили это в файле app.config. Visual studio должен обновить окончательный файл конфигурации в папке bin/debug.

Ответ 3

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

System.Configuration.ConfigurationManager.OpenExeConfiguration(PATH_TO_CONFIG);

Ответ 4

Как правило, для служб Windows, которые я пишу, я отбрасываю файл appName.exe.config в C:\WINDOWS\system32\

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

Ответ 5

Файл App.config должен быть переименован в файл your_exe_file_name.exe.config и помещен рядом с файлом exe.

Ответ 6

Возможно ли, что у вас есть несколько экземпляров записи RuntimeFrequency? ConfigurationManager читает файл сверху вниз и обрабатывает каждый параметр отдельно. Следовательно, последнее значение RuntimeFrequency, которое определено в файле, является тем, которое оно будет использовать.

Если вы хотите точно знать, используется ли ваш файл, я бы просто удалил или прокомментировал какое-либо определение для RuntimeFrequency (ошибки копирования/вставки произойдут) и дождитесь появления ошибки приложения, когда ConfigurationManager попытается ссылаться на запись в AppSettings, который не существует.