第一種方法:采用MS現(xiàn)有的ConfigurationManager來進(jìn)行讀寫
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> /// 設(shè)置配置值(存在則更新,不存在則新增) /// </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> /// 設(shè)置連接字符串的值(存在則更新,不存在則新增) /// </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進(jìn)行寫操作(即:Add,Remove),因為這兩個屬性是只讀的,本人之前也疑惑,明明能夠調(diào)用Add,Remove方法,但使用時卻報錯。
第二種方法:采用原生的xml+XPATH來讀寫(來源于網(wǎng)絡(luò))
//==============================================// FileName: ConfigManager// Description: 靜態(tài)方法業(yè)務(wù)類,用于對C#、asp.net中的WinForm & WebForm 項目程序配置文件// app.config和web.config的[appSettings]和[connectionStrings]節(jié)點(diǎn)進(jìn)行新增、修改、刪除和讀取相關(guān)的操作。//==============================================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 應(yīng)用程序配置文件管理器/// </summary>public class ConfigManager{ public ConfigManager() { // // TODO: 在此處添加構(gòu)造函數(shù)邏輯 // } /// <summary> /// 對[appSettings]節(jié)點(diǎn)依據(jù)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("http://appSettings"); //得到[appSettings]節(jié)點(diǎn) ////得到[appSettings]節(jié)點(diǎn)中關(guān)于Key的子節(jié)點(diǎn) XmlElement element = (XmlElement)node.SelectSingleNode("http://add[@key='" + key + "']"); if (element != null) { value = element.GetAttribute("value"); } return value; } /// <summary> /// 對[connectionStrings]節(jié)點(diǎn)依據(jù)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("http://connectionStrings"); //得到[appSettings]節(jié)點(diǎn) ////得到[connectionString]節(jié)點(diǎn)中關(guān)于name的子節(jié)點(diǎn) XmlElement element = (XmlElement)node.SelectSingleNode("http://add[@name='" + name + "']"); if (element != null) { connectionString = element.GetAttribute("connectionString"); } return connectionString; } /// <summary> /// 更新或新增[appSettings]節(jié)點(diǎn)的子節(jié)點(diǎn)值,存在則更新子節(jié)點(diǎn)Value,不存在則新增子節(jié)點(diǎn),返回成功與否布爾值 /// </summary> /// <param name="configurationFile">要操作的配置文件名稱,枚舉常量</param> /// <param name="key">子節(jié)點(diǎn)Key值</param> /// <param name="value">子節(jié)點(diǎn)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("http://appSettings"); //得到[appSettings]節(jié)點(diǎn) try { ////得到[appSettings]節(jié)點(diǎn)中關(guān)于Key的子節(jié)點(diǎn) XmlElement element = (XmlEleme
新聞熱點(diǎn)
疑難解答