Я создаю службу 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
aОшибка нулевой ссылки, потому что моя строка подключения не загружена.Единственные загружаемые строки подключения загружаются из файла machine.config, расположенного в каталоге c: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ machine.config
Если я создаю параметр области приложения дляСлужба, я могу получить эту настройку, используя My.Settings.setting ->, так что это не значит, что файл App.config не читается.
Мой вопрос: почему не используются мои строки подключениязагружен из файла App.config?
Спасибо за вашу помощь.
ОБНОВЛЕНИЕ:
Кроме того, на данный момент, дажеработа вокруг будет оценена;единственная причина использования app.config - возможность зашифровать содержимое с помощью DpapiProtectedConfigurationProvider (содержимое будет иметь некоторые значения имени пользователя / пароля для подключения к службе и базе данных).
Я пытался создать раздел AppSettings вручную вapp.config, но эти настройки также не были прочитаны ConfigurationManager (count = 0).
UPDATE 2:
В соответствии с предложением я попытался открыть вручнуюфайл app.config выглядит так:
Dim exePath As String = System.IO.Path.Combine(Environment.CurrentDirectory, "ServiceName.exe")
Dim myConfig As Configuration = ConfigurationManager.OpenExeConfiguration(exePath)
Итак, вот странная часть, когда я заглядываю внутрь, путь правильный (указывает на мой app.config), но строки подключения все еще загружаются с машиныФайл .config (мои строки подключения не загружены) !!ARGH
ОБНОВЛЕНИЕ 3:
Хорошо, так, я понял это.При ссылке на проект (родительский) из другого проекта (дочерний), дочерний app.config используется, даже если используются родительские классы.Таким образом, я могу получить connectionStrings для отображения, если я скопирую их в дочерний app.config.При попытке открыть его вручную, мой currentDirectory был дочерним, а не родительским (странно, как он не выдал исключение - он не смог бы найти файл конфигурации ... он просто молча использовал machine.config... Ну что ж).
Спасибо всем за помощь!