Файл конфигурации 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". Я здесь что-то не так?
Ответы
Ответ 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, который не существует.