2017-05-04 52 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

当我使用您的方法时,仍然会收到该部分被锁定的异常 –

相关问题