Как читать значения из App.config в .Net 4.0 с помощью ConfigurationManager?

Я создаю службу Windows в .Net 4.0 и тестирую некоторые функции этой службы с помощью клиента форм Windows, ссылаясь на проект службы.

Проект службы имеет файл App.config, и этот файл выглядит следующим образом:

<?xml version="1.0" encoding="utf-8" ?>
  <configuration>
     <connectionStrings>
       <clear />
       <add name="myLocalMySQLDBUsername" connectionString="username"/>
     </connectionStrings>
  </configuration>

Когда функция, принадлежащая службе, вызывает:

  • ConfigurationManager.ConnectionStrings ("myLocalMySQLDBUsername"). ConnectionString

выдается ошибка нулевой ссылки, потому что моя строка подключения не загружена. Загружаются только строки подключения из файла machine.config, расположенного в c: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ machine.config

Если я создаю параметр области приложения для службы, я можно получить эту настройку с помощью My.Settings.setting ->, поэтому это не похоже на то, что файл App.config не читается.

Мой вопрос: почему мои строки подключения не загружаются из файла App.config?

Спасибо за вашу помощь.

ОБНОВЛЕНИЕ:

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

Я попытался создать раздел AppSettings вручную в app.config, но эти настройки также не были прочитано диспетчером конфигурации (count = 0).

ОБНОВЛЕНИЕ 2:

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

Dim exePath As String = System.IO.Path.Combine(Environment.CurrentDirectory, "ServiceName.exe")

Dim myConfig As Configuration = ConfigurationManager.OpenExeConfiguration(exePath)

Итак, вот странная часть, когда я смотрю внутрь , путь правильный (указывает на мой app.config), но строки подключения все еще загружаются из файла machine.config (мои строки подключения не загружаются) !! ARGH

ОБНОВЛЕНИЕ 3:

Хорошо, итак, я разобрался. При ссылке на проект (родительский) из другого проекта (дочернего) дочерний app.config используется, даже если используются родительские классы. Таким образом, Я могу отобразить строки подключения, если скопирую их в файл app.config ребенка. При попытке открыть его вручную мой currentDirectory был дочерним, а не родительским (странно, как он не генерировал исключение - он не смог бы найти файл конфигурации ... он просто молча использовал machine.config ... Ну что ж).

Спасибо всем за помощь!

7
задан Dima 10 April 2011 в 04:25
поделиться