【问题标题】:Modify App.config permanently C#永久修改 App.config C#
【发布时间】:2010-09-08 08:31:34
【问题描述】:

好的,所以我尝试使用App.Config 文件中的appSettings 元素来确定要使用哪种存储。

这是我的 app.config 文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
  </configSections>
  <appSettings>
    <add key="storage" value="memory"/>
  </appSettings>
</configuration>

所以我想将存储“设置”的值更改为“xmlfile”,所以我根据我在互联网上找到的一些帖子编写了这个方法来更改字段:

public static void UpdateAppSettings(string keyName, string keyValue)
{
    XmlDocument doc = new XmlDocument();

    doc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);

    foreach (XmlElement elem in doc.DocumentElement)
    {
        if (elem.Name == "appSettings")
        {
            foreach (XmlNode node in elem.ChildNodes)
            {
                if (node.Attributes[0].Value == keyName)
                {
                    node.Attributes[1].Value = keyValue;
                }
            }
        }
    }
    doc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
}

当我使用它时,App.Config 没有任何变化。关于我做错了什么有什么想法吗?

附言

仅供参考我只是用下面的简单方法来测试一下:

    Console.WriteLine(ConfigurationManager.AppSettings["storage"].ToString());
    Console.Read();
    AppConfigFileSettings.UpdateAppSettings("storage", "xmlfile");
    Console.WriteLine(ConfigurationManager.AppSettings["storage"].ToString());
    Console.Read();

这只是两次打印出“内存”。

【问题讨论】:

    标签: c# .net xml visual-studio appsettings


    【解决方案1】:

    您看到该行为的原因是配置仅加载一次,随后对应用程序配置设置的访问来自内存。

    您可以使用ConfigurationManager.RefreshSection("appSettings") 刷新应用设置部分,这样新值将被加载到内存中。

    【讨论】:

    • 哇,太好了。我不知道这是可能的。因此可以在运行时更改所有配置。
    猜你喜欢
    • 1970-01-01
    • 2015-08-18
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    相关资源
    最近更新 更多