程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 【C#】#103 動態修改App.config配置文件,

【C#】#103 動態修改App.config配置文件,

編輯:C#入門知識

【C#】#103 動態修改App.config配置文件,


 

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved