2012-03-07 37 views
4

我正在使用VS 2008.獲取c#服務中的連接字符串

我有需要部署的服務。該服務不會從.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爲null。我如何從web.config獲取這個值?

我甚至增加了以下,但它也沒有工作:

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

如果通過連接字符串列表我環路,則它不斷從調用應用程序帶回的連接字符串。有沒有辦法可以使用配置文件?

+0

嘗試調試並查看ConfigurationManager.ConnectionStrings中有什麼...看起來你的代碼可能是工作。 – 2012-03-07 06:54:03

+0

看到這個http://social.msdn.microsoft.com/Forums/en-IE/csharplanguage/thread/594cc2ef-ad6b-4e96-8b07-42ea67b2e351 ... – 2012-03-07 06:57:00

+0

而這,也許他們可以幫助你http:// stackoverflow.com/questions/9494699/how-to-get-connection-string-from-another-project-in-linq-to-sql – 2012-03-07 06:57:18

回答

0

我右鍵點擊該項目,並添加類型的設置名爲「name_of_your_service.exe.config」

詳細文件連接字符串。然後我檢索它:

MyProject.Properties.Settings.Default.MyConnectionString; 
+0

http://stackoverflow.com/questions/2548476/accessing-another-projects-settings-file – Peter 2012-03-07 09:27:50

1

我會嘗試這樣的事:

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

你應該注意的配置文件的名稱傳遞的字符串。
它應該是exe或dll的名稱,而不是配置文件本身。 OpenExeConfiguration將打開作爲配置對象OpenExeConfiguration

剛剛發現一個有趣的問題here on SO