對 C/S模式 下的 App.config 配置文件的AppSetting節點,支持配置信息現改現用,並可以持久保存。
一. 先了解一下如何獲取 配置信息裡面的內容【獲取配置信息推薦使用這個】
1.1 獲取方法一:獲取之前需要引用命名空間: using System.Configuration;
ConfigurationManager.AppSettings["key"]
1.2 獲取方法二:使用XML類,直接 Load 配置文件,然後讀取 AppSetting節點下的信息【不推薦使用】
二、寫入,或者修改配置I信息【推薦兩個方法一起使用】
2.1 方法一:使用系統自帶的ConfigurationManager類
存在問題:寫入之後,不能持久化的保存起來,只能在程序運行的區間有作用。程序關閉,存儲的信息就消失。
Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); cfa.AppSettings.Settings["SMTP"].Value = value;
2.2 方法二: 使用XML類加載配置文件,在添加XMLNode節點,或者修改【直接修改原文件】
存在問題:改修改/添加結束,不能馬上使用到最新的配置信息。
try { XmlDocument xDoc = new XmlDocument(); //獲取App.config文件絕對路徑 String basePath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase; String path = basePath.Substring(0, basePath.Length - 10) + "App.config"; xDoc.Load(path); XmlNode xNode; XmlElement xElem1; XmlElement xElem2; xNode = xDoc.SelectSingleNode("//appSettings"); xElem1 = (XmlElement)xNode.SelectSingleNode("//add[@key='" + AppKey + "']"); if (xElem1 != null) xElem1.SetAttribute("value", AppValue); else { xElem2 = xDoc.CreateElement("add"); xElem2.SetAttribute("key", AppKey); xElem2.SetAttribute("value", AppValue); xNode.AppendChild(xElem2); } xDoc.Save(path); //Properties.Settings.Default.Reload(); } catch (Exception e) { string error = e.Message; }
推薦的使用的方法:
try { XmlDocument xDoc = new XmlDocument(); //獲取App.config文件絕對路徑 String basePath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase; basePath = basePath.Substring(0, basePath.Length - 10); String path = basePath + "App.config"; xDoc.Load(path); XmlNode xNode; XmlElement xElem1; XmlElement xElem2; //修改完文件內容,還需要修改緩存裡面的配置內容,使得剛修改完即可用 //如果不修改緩存,需要等到關閉程序,在啟動,才可使用修改後的配置信息 Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); xNode = xDoc.SelectSingleNode("//appSettings"); xElem1 = (XmlElement)xNode.SelectSingleNode("//add[@key='" + AppKey + "']"); if (xElem1 != null) { xElem1.SetAttribute("value", AppValue); cfa.AppSettings.Settings["AppKey"].Value = AppValue; } else { xElem2 = xDoc.CreateElement("add"); xElem2.SetAttribute("key", AppKey); xElem2.SetAttribute("value", AppValue); xNode.AppendChild(xElem2); cfa.AppSettings.Settings.Add(AppKey, AppValue); } //改變緩存中的配置文件信息(讀取出來才會是最新的配置) cfa.Save(); ConfigurationManager.RefreshSection("appSettings"); xDoc.Save(path); //Properties.Settings.Default.Reload(); } catch (Exception e) { string error = e.Message; }
可以直接下載使用
源碼類:AppSettingHelper.cs