2010-09-08 82 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