2017-05-04 83 views
0

我試圖用下面的方法在運行時節省每用戶基礎上的app.config連接字符串:保存的ConnectionString在App.config中

public void saveConnectionString(string serverName, string conn) 
{ 
    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal); 
    var connectionString = config.ConnectionStrings.ConnectionStrings[serverName]; 
    config.ConnectionStrings.SectionInformation.AllowExeDefinition = ConfigurationAllowExeDefinition.MachineToLocalUser; 
    if (connectionString == null) 
    { 
     config.ConnectionStrings.ConnectionStrings.Add(new ConnectionStringSettings 
     { 
      Name = serverName, 
      ConnectionString = conn, 
      ProviderName = "System.Data.SqlClient" 
     }); 

     config.Save(ConfigurationSaveMode.Modified); 
    } 
    else 
    { 
     connectionString.ConnectionString = conn; 
    } 
} 

我得到一個異常:

ConfigurationSection屬性鎖定時無法編輯。

當我試圖獲得ConfigurationAllowExeDefinition。有沒有一種方法可以創建我自己的部分?

+0

請發佈例外和錯誤,我們不介意讀者.... – TheLethalCoder

+0

是否有可能在運行時更改配置?這將需要至少重新啓動Web應用程序?沒有? –

+0

我已經添加了異常消息和它的一個winform應用程序,而不是一個web應用程序。 –

回答

0

與下面碼嘗試的代碼之後config.Save: -

ConfigurationManager.RefreshSection( 「的ConnectionStrings」);

+0

在達到保存之前發生異常。 –

+0

希望這會爲你工作,試試這個。 config.Save(ConfigurationSaveMode.Minimal) 而不是(ConfigurationSaveMode.Modified); –

+0

這仍然不會工作,因爲異常發生在行:config.ConnectionStrings.SectionInformation.AllowExeDefinition = ConfigurationAllowExeDefinition.MachineToLocalUser;並且它永遠不會到達保存部分 –

0
We cant add to ConfigurationManager.ConnectionStrings using ConfigurationManager.ConnectionStrings.Add(connectionStringSettings) -- This fails. 
But we can add to the configuration section and refresh the ConfigurationManager. 

public static void AddConnectionStringSettings(
     System.Configuration.Configuration config, 
     System.Configuration.ConnectionStringSettings conStringSettings) 

{ 
    ConnectionStringsSection connectionStringsSection = config.ConnectionStrings; 
    connectionStringsSection.ConnectionStrings.Add(conStringSettings); 
    config.Save(ConfigurationSaveMode.Minimal); 
    ConfigurationManager.RefreshSection("connectionStrings"); 
} 
+0

當我使用您的方法時,仍然會收到該部分被鎖定的異常 –

相關問題