Получение строки подключения в сервисе ac # - PullRequest
4 голосов
/ 07 марта 2012

Я использую VS 2008.

У меня есть служба, которую нужно развернуть.Служба не будет использоваться из клиента .NET (например, веб-сайт или клиент Windows).Для этого требуется подключение к базе данных.

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

<connectionStrings>

     <clear />
     <add name="REConnectionString"
          connectionString="Data Source=MyServer;Initial Catalog=MyDatabase;Integrated Security=True;"
          providerName="System.Data.SqlClient" />

</connectionStrings>

И в моем MyService.svc.cs у меня есть следующее:

private readonly string connectionString = ConfigurationManager.ConnectionStrings["REConnectionString"].ConnectionString;

Но когдаЯ запускаю службу, это значение connectionString равно нулю.Как я могу получить это значение из web.config?

Я даже добавил следующее, но оно также не работает:

<appSettings>
     <add key="REConnectionString" value="Data Source=MyServer;Initial Catalog=MyDatabase;Integrated Security=True;"/>
</appSettings>

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

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Я попробую что-то вроде этого:

Configuration config = ConfigurationManager.OpenExeConfiguration("name_of_your_service.exe");
string connectString = config.ConnectionStrings["YourConnectionStringNameHere"];

Обратите внимание на строку, переданную в качестве имени файла конфигурации.
Это должно быть имя exe или dll, а не сам файл конфигурации. OpenExeConfiguration откроет в качестве объекта конфигурации файл с именем "name_of_your_service.exe.config"

Подробная информация о OpenExeConfiguration

Только что нашел интересный вопрос здесь, на SO

0 голосов
/ 07 марта 2012

Я щелкнул правой кнопкой мыши по проекту и добавил настройку типа строки подключения.И тогда я получаю это как:

MyProject.Properties.Settings.Default.MyConnectionString;
...