• ASP.NET 在程序中动态删除、修改配置文件节点值的方法


    第一步:在App_Code文件夹下新建一个类ReadWriteConfig,代码在博文后面,可以完全复制

    第二步:如果在Web.config中有以下的节点及值,可以按第三步中的方法进行操作

    <appSettings>

        <add key="FileUploadSize" value="10240" />

        <add key="FileUploadType" value="JPG|GIF|PNG" />   
    </appSettings>
    第三步:使用ReadWriteConfig类进行操作

    (1)修改节点值

      bool b = false; //成功操作的返回值
      ReadWriteConfig config = new ReadWriteConfig();
      b = config.SetValue("FileUploadSize", 一个新值);

    (2) 删除节点

    ReadWriteConfig config = new ReadWriteConfig();
    config.removeElement("FileUploadType");

    (3) 查看节点值

    ReadWriteConfig config = new ReadWriteConfig();
    SearchedValue = config.readConfigDoc("FileUploadSize");

    搞定,收工!!!!

    有什么问题的话可以直接留言哟……………………

    ReadWriteConfig类的内容

    using System;
    using System.Configuration;
    using System.Reflection;
    using System.Web;
    using System.Xml;
    public enum ConfigFileType
    {
        WebConfig,
        AppConfig
    }

    /// <summary>
    /// Summary description for ReadWriteConfig.
    /// </summary>
    public class ReadWriteConfig
    {
        public string docName = String.Empty;
        private XmlNode node = null;
        private int _configType;
        public int ConfigType
        {
            get { return _configType; }
            set { _configType = value; }
        }

        #region SetValue
        public bool SetValue(string key, string value)
        {
            XmlDocument cfgDoc = new XmlDocument();
            loadConfigDoc(cfgDoc);
            // retrieve the appSettings node 
            node = cfgDoc.SelectSingleNode("//appSettings");
            if (node == null)
            {
                throw new InvalidOperationException("appSettings section not found");
            }
            try
            {
                // XPath select setting "add" element that contains this key     
                XmlElement addElem = (XmlElement)node.SelectSingleNode("//add[@key='" + key + "']");
                if (addElem != null)
                {
                    addElem.SetAttribute("value", value);
                }
                // not found, so we need to add the element, key and value 
                else
                {
                    XmlElement entry = cfgDoc.createElement_x_x_x_x_x("add");
                    entry.SetAttribute("key", key);
                    entry.SetAttribute("value", value);
                    node.AppendChild(entry);
                }
                //save it 
                saveConfigDoc(cfgDoc, docName);
                return true;
            }
            catch
            {
                return false;
            }
        }

        #endregion

        #region saveConfigDoc
        private void saveConfigDoc(XmlDocument cfgDoc, string cfgDocPath)
        {
            try
            {
                XmlTextWriter writer = new XmlTextWriter(cfgDocPath, null);
                writer.Formatting = Formatting.Indented;
                cfgDoc.WriteTo(writer);
                writer.Flush();
                writer.Close();
                return;
            }
            catch
            {
                throw;
            }
        }

        public string readConfigDoc(string elementKey)
        {
            try
            {
                XmlDocument cfgDoc = new XmlDocument();
                loadConfigDoc(cfgDoc);
                // retrieve the appSettings node
                node = cfgDoc.SelectSingleNode("//appSettings");
                if (node == null)
                {
                    throw new InvalidOperationException("appSettings section not found");
                }
                XmlElement addElem = (XmlElement)node.SelectSingleNode("//add[@key='" + elementKey + "']");

                if (addElem != null)
                {
                    return addElem.GetAttribute("value");
                }
                // not found, so we need to add the element, key and value 
                else
                {
                    return "";
                }
            }
            catch
            {
                return "";
            }
        }
        #endregion

        #region removeElement
        public bool removeElement(string elementKey)
        {
            try
            {
                XmlDocument cfgDoc = new XmlDocument();
                loadConfigDoc(cfgDoc);
                // retrieve the appSettings node
                node = cfgDoc.SelectSingleNode("//appSettings");
                if (node == null)
                {
                    throw new InvalidOperationException("appSettings section not found");
                }
                // XPath select setting "add" element that contains this key to remove    
                node.RemoveChild(node.SelectSingleNode("//add[@key='" + elementKey + "']"));
                saveConfigDoc(cfgDoc, docName);
                return true;
            }
            catch
            {
                return false;
            }
        }
        #endregion

        #region modifyElement
        public bool modifyElement(string elementKey)
        {
            try
            {
                XmlDocument cfgDoc = new XmlDocument();
                loadConfigDoc(cfgDoc);
                // retrieve the appSettings node
                node = cfgDoc.SelectSingleNode("//appSettings");
                if (node == null)
                {
                    throw new InvalidOperationException("appSettings section not found");
                }
                // XPath select setting "add" element that contains this key to remove    
                node.RemoveChild(node.SelectSingleNode("//add[@key='" + elementKey + "']"));
                saveConfigDoc(cfgDoc, docName);
                return true;
            }
            catch
            {
                return false;
            }
        }
        #endregion

        #region loadConfigDoc
        private XmlDocument loadConfigDoc(XmlDocument cfgDoc)
        {
            // load the config file 
            if (Convert.ToInt32(ConfigType) == Convert.ToInt32(ConfigFileType.AppConfig))
            {
                docName = ((Assembly.GetEntryAssembly()).GetName()).Name;
                docName += ".exe.config";
            }
            else
            {
                docName = HttpContext.Current.Server.MapPath("~/Web.config"); //你的配置文件名称
            }
            cfgDoc.Load(docName);
            return cfgDoc;
        }
        #endregion
    }

    联盟快卖 商人,生意人,待创业人士在此可以共赢互利 期待你的加入 群号:140809277
  • 相关阅读:
    [慢查优化]慎用MySQL子查询,尤其是看到DEPENDENT SUBQUERY标记时
    Web开发基本准则-55实录-缓存策略
    Web开发基本准则-55实录-Web访问安全
    线上Java应用排查和诊断规范
    [慢查优化]建索引时注意字段选择性 & 范围查询注意组合索引的字段顺序
    [慢查优化]联表查询注意谁是驱动表 & 你搞不清楚谁join谁更好时请放手让mysql自行判定
    再说memcache的multiget hole(无底洞)
    RCA:未注意Curl-library Post 1024以上字节时的HTTP/1.1特性导致 HessianPHP 传输数据失败
    (研发系)职业化7个细节
    5·12和6·17两知名网站域名被劫持事件实施过程回放
  • 原文地址:https://www.cnblogs.com/yexinw/p/2195226.html
Copyright © 2020-2023  润新知