如何更改自定义configSections变量的值?

时间:2019-01-14 01:23:06

标签: c# app-config

我的App.config文件的configSections中有一个自定义部分,如何在代码中更改此部分变量之一的值?

我要更改的部分是“ serverConfiguration”,我想更改“ serverUrl”的值:

<?xml version="1.0" encoding="utf-8"?>
 <configuration>
  <configSections>
   <section name="serverConfiguration" type="someType" />
  </configSections>
    <serverConfiguration serverUrl="http://development/server/" />
</configuration>

我在上一个问题App.Config change value的下面找到了这段代码。 它看起来很接近我的需要,但是我不确定如何自己更改它以将其用于自定义部分而不是AppSettings。下面的代码可以满足我的工作要求吗?如何更改下面的代码,以允许我将此新字符串作为serverUrl“ http://staging/server/”传递?谢谢!

class Program
{
    static void Main(string[] args)
    {
        UpdateSetting("lang", "Russian");
    }

    private static void UpdateSetting(string key, string value)
    {
        Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        configuration.AppSettings.Settings[key].Value = value;
        configuration.Save();

        ConfigurationManager.RefreshSection("appSettings");
    }
}

1 个答案:

答案 0 :(得分:0)

您可以选择将配置加载到XML中,编辑节点值并将其保存回去。尝试一下

        var xmlDoc = new XmlDocument();
        xmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);          

        xmlDoc.SelectSingleNode("//serverConfiguration").Attributes["serverUrl"].Value = "http://staging/server/";
        xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);

也许,保存文件后刷新Config节是个好主意。

ConfigurationManager.RefreshSection