您的位置:首页 > 移动开发

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

2015-06-17 15:18 573 查看
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");

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: