2013-06-11 66 views
0

我有一個應用程序(控制檯)已經到位,正在從bin目錄讀取連接字符串。c#在運行時從文件加載連接字符串

我們計劃通過命令行這將指向configurations.This方式,我們將能夠通過只是改變了命令行參數「ConfigurationDirectory」指向不同DB之間切換

的目錄路徑這要求我們動態加載連接字符串,我的連接字符串格式如下:

<connectionStrings> 
    <add name="DB1" connectionString="Data Source=DB;Initial Catalog=someCatalog;Persist Security Info=True;User ID=****;Password=****; Asynchronous Processing=true" providerName="System.Data.SqlClient" /> 
    <add name="DB2" connectionString="Data Source=DBName;Initial Catalog=someCatalog2;Persist Security Info=True;User ID=****;Password=****; Asynchronous Processing=true" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

我們沒有配置標籤。因爲抱怨是沒有配置標記

var connectionStringconfigfile = "C:Somepath\connectionstring.config" 
    ExeConfigurationFileMap configMap = new ExeConfigurationFileMap(); 
          configMap.ExeConfigFilename = connectionStringconfigfile; 
          Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None); 
          config.Save(ConfigurationSaveMode.Modified); 
          ConfigurationManager.RefreshSection("connectionStrings"); 

我無法使用ConnectionString文件我目前:

要加載連接字符串動態我想這一點。

的問題是,我的代碼已經使用了以下初始化連接字符串:

ConfigurationManager.ConnectionStrings["DB1"].ConnectionString 

有了這種新方法上面的行似乎並沒有工作,總是給我空,有沒有辦法讓我不必更改現有的代碼?

+0

爲什麼不直接將連接字符串傳遞給命令行上的可執行文件? – Oded

+0

因爲我們也初始化AppSettings文件,所以它只是一個我們在參數中傳遞的目錄路徑而不是實際的文件名。 –

回答

0

如果你包裹在<配置>塊的外部配置文件,如:

<configuration><br> 
    <connectionStrings><br> 
     <add name="DB1" connectionString="Data Source=DB;Initial Catalog=someCatalog;Persist Security Info=True;User ID=****;Password=****; Asynchronous Processing=true" providerName="System.Data.SqlClient" /><br> 
     <add name="DB2" connectionString="Data Source=DBName;Initial Catalog=someCatalog2;Persist Security Info=True;User ID=****;Password=****; Asynchronous Processing=true" providerName="System.Data.SqlClient" /><br> 
     </connectionStrings><br> 
</configuration> 

您的代碼應該工作。

相關問題