无法在app.config中添加/更新连接字符串 [英] unable to add/update connection string in app.config

查看:124
本文介绍了无法在app.config中添加/更新连接字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


我正在使用以下代码在我的app.config文件中添加新的连接字符串,但它没有更新,也没有引发任何错误.
当我执行此代码时,消息框仅显示两个连接字符串,并且app.config文件也未更新

Hi,
I am using the below code to add a new connection string in my app.config file but it is not updating nor it is throwing any error.
When i execute this code the message box displaysonly the firs two connection strings and app.config file is also not updated

try
            {
                
                System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                //ConnectionStringSettingsCollection connections = ConfigurationManager.ConnectionStrings;
                //ConfigurationPermission cp = new ConfigurationPermission(System.Security.Permissions.PermissionState.Unrestricted);
                ConnectionStringSettings css = new ConnectionStringSettings("cString3", "abcdefxyz");
                config.ConnectionStrings.ConnectionStrings.Add(css);
                config.Save(ConfigurationSaveMode.Minimal);
                ConfigurationManager.RefreshSection("connectionStrings");
                foreach (ConnectionStringSettings connection in connections)
                {
                    string str = connection.Name;
                    string val = connection.ConnectionString;
                    MessageBox.Show(str + " " + val);
                    //textBox1.Text = str;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }



我的xml文件是



and my xml file is

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Setting1" value="1" />
    <add key="Setting2" value="2" />
  </appSettings>
  <connectionStrings>
    <add name="cString1" connectionString="The first connection string is correct"/>
    <add name="cString2" connectionString="The second connection string"/>
  </connectionStrings>
</configuration>

推荐答案

看看 ^ ]

最好的问候
Espen Harlinn
Have a look at Read/Write App.Config File with .NET 2.0[^]

Best regards
Espen Harlinn


检查我的文章.
在C#运行时期间在App.Config文件中配置连接字符串 [ ^ ]
Check my article.
Configuring a Connection String in the App.Config File During Runtime in C#[^]


try
            {
                
                System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                //ConnectionStringSettingsCollection connections = ConfigurationManager.ConnectionStrings;
                //ConfigurationPermission cp = new ConfigurationPermission(System.Security.Permissions.PermissionState.Unrestricted);
                ConnectionStringSettings css = new ConnectionStringSettings("cString3", "abcdefxyz");
                config.ConnectionStrings.ConnectionStrings.Add(css);
                config.Save();
                ConfigurationManager.RefreshSection("connectionStrings"); //May be this is unnecessary.
                foreach (ConnectionStringSettings connection in connections)
                {
                    string str = connection.Name;
                    string val = connection.ConnectionString;
                    MessageBox.Show(str + " " + val);
                    //textBox1.Text = str;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }



因此,我已经在我的一个项目(Enterprise Library 4.1)中实现了此功能:



So, I have implemented this on one of my projects (Enterprise Library 4.1):

private static void CopyCurrentDataConfiguration(IDataConfiguration dataConfig)
       {
           // Load the configuration from the configuration file
           var configSource = ConfigurationSourceFactory.Create();

           // Retrieve the default datasource name
           var dataConfigurationSection = (DatabaseSettings)configSource.GetSection(
               DatabaseSettings.SectionName);
           var defaultDatabaseName = dataConfigurationSection.DefaultDatabase;

           CopyConnectionStrings(dataConfig, defaultDatabaseName);
       }

       private static void CopyConnectionStrings(IDataConfiguration dataConfig,string defaultDatabaseName)
       {
           // Add the configurations from our application config file to the builder
           foreach (ConnectionStringSettings settings in ConfigurationManager.ConnectionStrings)
           {
               try
               {
                   var configuredDatabase = dataConfig
                     .ForDatabaseNamed(settings.Name)
                     .ThatIs
                     .AnotherDatabaseType(settings.ProviderName);

                   if (settings.Name.Equals(defaultDatabaseName))
                   {
                       configuredDatabase.AsDefault();
                   }
               }
               catch { }
           }
       }

       public static void AddNewConnectionString(string databaseName, string connString)
       {
           var builder = new ConfigurationSourceBuilder();
           var dataConfig = builder.ConfigureData();
           CopyCurrentDataConfiguration(dataConfig);

           // Add our database connections to the builder
           dataConfig
             .ForDatabaseNamed(databaseName)
             .ThatIs
             .AnotherDatabaseType("Oracle.DataAccess.Client")
             .WithConnectionString(connString)
             .AsDefault();

           string conn = "your_connection_string";

           // Create a new configuration source, update it with the builder and make it the current configuration
           var newConfigSource = new DictionaryConfigurationSource();
           builder.UpdateConfigurationWithReplace(newConfigSource);
           EnterpriseLibraryContainer.Current = EnterpriseLibraryContainer.CreateDefaultContainer(newConfigSource);
       }



希望对您有所帮助.



Hope it helps.


这篇关于无法在app.config中添加/更新连接字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆