2010-05-13 27 views
19

我有包括含有一個連接字符串的應用配置文件一個控制檯應用程序,如下所示:C#配置管理器。的ConnectionStrings

<configuration> 
    <connectionStrings> 
    <add name="Target" 
     connectionString="server=MYSERVER; Database=MYDB; Integrated Security=SSPI;" /> 
    </connectionStrings> 
</configuration> 

當我使用它傳遞給我的連接:

ConfigurationManager.ConnectionStrings[1].ToString() 

我在那裏有兩個值,因此使用集合中的第二個,我的問題是第二個來自哪裏?

我檢查了\ Bin版本和原來的,它不是我的!它顯然是一個系統生成一個,但我沒有看到過呢?任何人都可以啓發我嗎?

神祕的連接字符串:

data source=.\SQLEXPRESS; 
      Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf; 
      User Instance=true 

這不是因爲這樣的問題,我只是想知道這是爲什麼出現?提前致謝!

爲了將來可以引用那些可能會也可能不會遇到此問題的人,在發現machine.config之後,很顯然,按索引引用配置是一種不好的做法,因爲每個棧可能會有所不同,這就是爲什麼「鍵「被使用。

在這種情況下我的代碼是:

ConfigurationManager.ConnectionStrings["Target"].ToString() 

乾杯所有!

+0

乾杯傢伙!我開悟:) – Yoda 2010-05-13 15:40:03

回答

26

查看您的machine.config。如果你只想要你進入,你可以在<clear />元素添加到像這樣的<connectionStrings>元素...

<connectionStrings> 
    <clear /> 
    <add name="Target" 
     connectionString= 
      "server=MYSERVER; Database=MYDB; Integrated Security=SSPI;" /> 
</connectionStrings> 
+0

這很完美,非常感謝。 – 2015-07-01 10:06:05

3

它在machine.config文件中定義,它對機器上的所有.Net應用程序都是全局的。

連接字符串通過配置層次結構「堆棧」,這就是爲什麼您自己的連接字符串的元素名稱被標記爲「添加」。您將自己的連接字符串添加到機器級連接字符串列表中。

這可能是最好的使用方法:

ConfigurationManager.ConnectionStrings["Target"].ConnectionString 

以確保您得到自己的連接字符串,即使在machine.config被修改。

+0

哈哈剛剛編輯我的帖子,讓這個,然後看到你的編輯。完全正確! – Yoda 2010-05-13 15:44:36

3

檢查你的machine.config(在WindowsDir \ Framework下)。我剛剛檢查過我和我有同樣的事情。

0

該指數第一個元素在連接字符串標籤默認存儲而且它代表了>會員卡數據庫連接字符串

CLR的注意事項的原因是在您的應用程序中使用,以便CLR以您的名義附加它默認情況下。

像什麼是CLR在沒有構造函數的類創建中使用默認構造函數做的事情。