2010-09-08 121 views
2

好的,所以我试图使用App.Config文件中的appSettings元素来确定要使用的存储类型。永久修改App.config C#

这里是我的的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没有变化。关于我在做什么的任何想法都是错误的?

P.S.

仅作参考我只使用以下简单的方法来测试它:

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

刚刚打印出的“记忆”的两倍。

回答

3

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

您可以使用ConfigurationManager.RefreshSection("appSettings")来刷新应用程序设置部分,并以这种方式将新值加载到内存中。

+0

哇,很好。我不知道这是可能的。所以可以在运行时改变所有的配置。 – SwissCoder 2010-09-08 11:49:32