• 变化App.config其中值,并保存


    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.IO;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    using System.Threading.Tasks;
    using System.Xml;


    namespace HandPickCrawlerDB.Extensions
    {
        public class AppHelper
        {
            private static string _appconfig = null;


            public static string AppConfig
            {
                get
                {
                    if (_appconfig == null)
                    {
                        Type t = typeof(System.Configuration.ConfigurationManager).Assembly.GetType("System.Configuration.ClientConfigurationHost");
                        object cfghst = Activator.CreateInstance(t, true);
                        PropertyInfo pi = t.GetProperty("ConfigPaths", BindingFlags.Instance | BindingFlags.NonPublic);
                        object cfgpath = pi.GetValue(cfghst, null);


                        Type t1 = typeof(System.Configuration.ConfigurationManager).Assembly.GetType("System.Configuration.ClientConfigPaths");
                        pi = t1.GetProperty("ApplicationConfigUri", BindingFlags.Instance | BindingFlags.NonPublic);
                        string path = (string)pi.GetValue(cfgpath, null);


                        if (string.IsNullOrEmpty(path))
                            _appconfig = string.Empty;
                        else
                            _appconfig = path.Replace(".vshost.", ".");
                    }
                    return _appconfig;
                }
                set
                {
                    _appconfig = value;
                }
            }


            public static void SetSettingToAppConfig(string key, string value)
            {
                if (string.IsNullOrEmpty(key))
                {
                    throw new Exception("key not be null");
                }
                else
                {
                    key = key.Trim();
                }
                if (string.IsNullOrEmpty(value))
                    value = "";
                else
                    value = value.Trim();


                if (!File.Exists(AppConfig))
                {
                    throw new DirectoryNotFoundException();
                }
                File.SetAttributes(AppConfig, FileAttributes.Normal);
                XmlDocument xmldoc = new XmlDocument();
                xmldoc.Load(AppConfig);
                XmlNodeList xmllst = xmldoc.SelectNodes("/configuration/appSettings/add");
                if (xmldoc.SelectSingleNode("/configuration/appSettings") == null)
                {
                    XmlNode n2 = xmldoc.CreateNode("element", "appSettings", "");
                    n2.InnerXml = "<add key="" + key + "" value="" + value + ""/>";
                    xmldoc.SelectSingleNode("/configuration").AppendChild(n2);
                    xmldoc.Save(AppConfig);
                }
                else if (xmllst.Count == 0)
                {
                    XmlNode n2 = xmldoc.CreateNode("element", "add", "");
                    XmlAttribute xa = xmldoc.CreateAttribute("key");
                    xa.Value = key;
                    n2.Attributes.Append(xa);
                    xa = xmldoc.CreateAttribute("value");
                    xa.Value = value;
                    n2.Attributes.Append(xa);
                    xmldoc.SelectSingleNode("/configuration/appSettings").AppendChild(n2);
                    xmldoc.Save(AppConfig);
                }
                else
                {
                    bool existed = false;
                    foreach (XmlNode n1 in xmllst)
                    {
                        if (n1.Attributes["key"].Value.ToUpper() == key.ToUpper())
                        {
                            n1.Attributes["value"].Value = value;
                            xmldoc.Save(AppConfig);
                            existed = true;
                            break;
                        }
                    }
                    if (!existed)
                    {
                        XmlNode xmlnd = xmldoc.SelectSingleNode("/configuration/appSettings");
                        XmlNode n2 = xmldoc.CreateNode("element", "add", "");
                        XmlAttribute xa = xmldoc.CreateAttribute("key");
                        xa.Value = key;
                        n2.Attributes.Append(xa);
                        xa = xmldoc.CreateAttribute("value");
                        xa.Value = value;
                        n2.Attributes.Append(xa);
                        xmlnd.AppendChild(n2);
                        xmldoc.Save(AppConfig);
                    }
                }
                ConfigurationManager.RefreshSection("appSettings");
            }
        }
    }
  • 相关阅读:
    谷歌json数据格式化插件
    引用图片出现403的解决办法
    CSS Sprite
    语义化标签
    响应式布局
    CSS浮动布局详解
    ELK华为云的镜像下载地址(ElasticSearch,logstash,kibana)
    redis集群方案--高可用集群
    redis集群方案--哨兵模式
    Redis集群实现分布式锁-RedLock
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4583417.html
Copyright © 2020-2023  润新知