两种读写配置文件的方案(app.config与web.config通用)
8/3/2015来源:C#应用人气:2933
两种读写配置文件的方案(app.config与web.config通用)
第一种方法:采用MS现有的ConfigurationManager来进行读写
using System.Configuration;namespace Zwj.TEMS.Common{ public abstract class ConfigHelper { PRivate ConfigHelper() { } /// <summary> /// 获取配置值 /// </summary> /// <param name="key"></param> /// <returns></returns> public static string GetAppSettingValue(string key) { return ConfigurationManager.AppSettings[key]; } /// <summary> /// 设置配置值(存在则更新,不存在则新增) /// </summary> /// <param name="key"></param> /// <param name="value"></param> public static void SetAppSettingValue(string key, string value) { var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); var setting = config.AppSettings.Settings[key]; if (setting==null) { config.AppSettings.Settings.Add(key, value); } else { setting.Value = value; } config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); } /// <summary> /// 删除配置值 /// </summary> /// <param name="key"></param> public static void RemoveAppSetting(string key) { var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); config.AppSettings.Settings.Remove(key); config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); } /// <summary> /// 获取连接字符串 /// </summary> /// <param name="name"></param> /// <returns></returns> public static string GetConnectionString(string name) { return ConfigurationManager.ConnectionStrings[name].ConnectionString; } /// <summary> /// 设置连接字符串的值(存在则更新,不存在则新增) /// </summary> /// <param name="name"></param> /// <param name="connstr"></param> /// <param name="provider"></param> public static void SetConnectionString(string name,string connstr, string provider) { var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); ConnectionStringSettings connStrSettings = config.ConnectionStrings.ConnectionStrings[name]; if (connStrSettings != null) { connStrSettings.ConnectionString = connstr; connStrSettings.ProviderName = provider; } else { connStrSettings = new ConnectionStringSettings(name, connstr, provider); config.ConnectionStrings.ConnectionStrings.Add(connStrSettings); } config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("connectionStrings"); } /// <summary> /// 删除连接字符串配置项 /// </summary> /// <param name="name"></param> public static void RemoveConnectionString(string name) { var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); config.ConnectionStrings.ConnectionStrings.Remove(name); config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("connectionStrings"); } }}
注意:不能直接使用ConfigurationManager.AppSettings及ConfigurationManager.ConnectionStrings进行写操作(即:Add,Remove),因为这两个属性是只读的,本人之前也疑惑,明明能够调用Add,Remove方法,但使用时却报错。
第二种方法:采用原生的xml+XPATH来读写(来源于网络)
//==============================================// FileName: ConfigManager// Description: 静态方法业务类,用于对C#、asp.net中的WinForm & WebForm 项目程序配置文件// app.config和web.config的[appSettings]和[connectionStrings]节点进行新增、修改、删除和读取相关的操作。//==============================================using System;using System.Data;using System.Configuration;using System.Web;using System.Collections.Generic;using System.Text;using System.Xml;public enum ConfigurationFile{ AppConfig = 1, WebConfig = 2}/// <summary>/// ConfigManager 应用程序配置文件管理器/// </summary>public class ConfigManager{ public ConfigManager() { // // TODO: 在此处添加构造函数逻辑 // } /// <summary> /// 对[appSettings]节点依据Key值读取到Value值,返回字符串 /// </summary> /// <param name="configurationFile">要操作的配置文件名称,枚举常量</param> /// <param name="key">要读取的Key值</param> /// <returns>返回Value值的字符串</returns> public static string ReadValueByKey(ConfigurationFile configurationFile, string key) { string value = string.Empty; string filename = string.Empty; if (configurationFile.ToString() == ConfigurationFile.AppConfig.ToString()) { filename = System.Windows.Forms.application.ExecutablePath + ".config"; } else { filename = System.AppDomain.CurrentDomain.BaseDirectory + "web.config"; } XmlDocument doc = new XmlDocument(); doc.Load(filename); //加载配置文件 XmlNode node = doc.SelectSingleNode("//appSettings"); //得到[appSettings]节点 ////得到[appSettings]节点中关于Key的子节点 XmlElement element = (XmlElement)node.SelectSingleNode("//add[@key='" + key + "']"); if (element != null) { value = element.GetAttribute("value"); } return value; } /// <summary> /// 对[connectionStrings]节点依据name值读取到connectionString值,返回字符串 /// </summary> /// <param name="configurationFile">要操作的配置文件名称,枚举常量</param> /// <param name="name">要读取的name值</param> /// <returns>返回connectionString值的字符串</returns> public static string ReadConnectionStringByName(ConfigurationFile configurationFile, string name) { string connectionString = string.Empty; string filename = string.Empty; if (configurationFile.ToString() == ConfigurationFile.AppConfig.ToString()) { filename = System.Windows.Forms.Application.ExecutablePath + ".config"; } else { filename = System.AppDomain.CurrentDomain.BaseDirectory + "web.config"; } XmlDocument doc = new XmlDocument(); doc.Load(filename); //加载配置文件 XmlNode node = doc.SelectSingleNode("//connectionStrings"); //得到[appSettings]节点 ////得到[connectionString]节点中关于name的子节点 XmlElement element = (XmlElement)node.SelectSingleNode("//add[@name='" + name + "']"); if (element != null) { connectionString = element.GetAttribute("connectionString"); } return connectionString; } /// <summary> /// 更新或新增[appSettings]节点的子节点值,存在则更新子节点Value,不存在则新增子节点,返回成功与否布尔值 /// </summary> /// <param name="configurationFile">要操作的配置文件名称,枚举常量</param> /// <param name="key">子节点Key值</param> /// <param name="value">子节点value值</param> /// <returns>返回成功与否布尔值</returns> public static bool UpdateOrCreateAppSetting(ConfigurationFile configurationFile, string key, string value) { bool isSuccess = false; string filename = string.Empty; if (configurationFile.ToString() == ConfigurationFile.AppConfig.ToString()) { filename = System.Windows.Forms.Application.ExecutablePath + ".config"; } else { filename = System.AppDomain.CurrentDomain.BaseDirectory + "web.config"; } XmlDocument doc = new XmlDocument(); doc.Load(filename); //加载配置文件 XmlNode node = doc.SelectSingleNode("//appSettings"); //得到[appSettings]节点 try { ////得到[appSettings]节点中关于Key的子节点 XmlElement element = (XmlEleme
最新文章推荐