1.建立一个class,ReadWriteConfig.cs using System; using System.Configuration; using System.Reflection; using System.Web; using System.Xml; public enum ConfigFileType { WebConfig, AppConfig} namespace WebApplication1 { /**//// <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; } } SetValue#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("add"); entry.SetAttribute("key",key); entry.SetAttribute("value",value); node.AppendChild(entry); } //save it saveConfigDoc(cfgDoc,docName); return true; } catch { return false; } } #endregion saveConfigDoc#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; } } #endregion removeElement#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 modifyElement#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 loadConfigDoc#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 }} 2.建立测试页面 2.1 html < HTML > < HEAD > < title > WebForm1 </ title > < meta name ="GENERATOR" Content ="Microsoft Visual Studio .NET 7.1" > < meta name ="CODE_LANGUAGE" Content ="C#" > < meta name ="vs_defaultClientScript" content ="JavaScript" > < meta name ="vs_targetSchema" content ="http://schemas.microsoft.com/intellisense/ie5" > </ HEAD > < body MS_POSITIONING ="GridLayout" > < form id ="Form1" method ="post" runat ="server" > < asp:Button id ="Button1" style ="Z-INDEX: 101; LEFT: 296px; POSITION: absolute; TOP: 120px" runat ="server" Text ="删除" ></ asp:Button > < asp:Button id ="Button2" style ="Z-INDEX: 102; LEFT: 232px; POSITION: absolute; TOP: 120px" runat ="server" Text ="新增" ></ asp:Button > < asp:Label id ="Label1" style ="Z-INDEX: 103; LEFT: 104px; POSITION: absolute; TOP: 32px" runat ="server" > key </ asp:Label > < asp:TextBox id ="TextBox1" style ="Z-INDEX: 104; LEFT: 168px; POSITION: absolute; TOP: 32px" runat ="server" ></ asp:TextBox > < asp:Label id ="Label2" style ="Z-INDEX: 105; LEFT: 104px; POSITION: absolute; TOP: 96px" runat ="server" > value </ asp:Label > < asp:TextBox id ="TextBox2" style ="Z-INDEX: 106; LEFT: 168px; POSITION: absolute; TOP: 80px" runat ="server" ></ asp:TextBox > < asp:Button id ="Button3" style ="Z-INDEX: 107; LEFT: 360px; POSITION: absolute; TOP: 120px" runat ="server" Text ="修改" ></ asp:Button > </ form > </ body > </ HTML > 2.2 cs代码 public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.Button Button1; protected System.Web.UI.WebControls.Label Label1; protected System.Web.UI.WebControls.TextBox TextBox1; protected System.Web.UI.WebControls.Label Label2; protected System.Web.UI.WebControls.TextBox TextBox2; protected System.Web.UI.WebControls.Button Button3; protected System.Web.UI.WebControls.Button Button2; private void Page_Load(object sender, System.EventArgs e) { } Web Form Designer generated code#region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); base.OnInit(e); } /**//// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.Button1.Click += new System.EventHandler(this.Button1_Click); this.Button2.Click += new System.EventHandler(this.Button2_Click); this.Button3.Click += new System.EventHandler(this.Button3_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void Button2_Click(object sender, System.EventArgs e) { //新增 ReadWriteConfig config = new ReadWriteConfig(); config.ConfigType = (int)ConfigFileType.WebConfig; config.SetValue(this.TextBox1.Text,this.TextBox2.Text); } private void Button1_Click(object sender, System.EventArgs e) { //删除 ReadWriteConfig config = new ReadWriteConfig(); config.ConfigType = (int)ConfigFileType.WebConfig; config.removeElement(this.TextBox1.Text); } private void Button3_Click(object sender, System.EventArgs e) { //修改 ReadWriteConfig config = new ReadWriteConfig(); config.ConfigType = (int)ConfigFileType.WebConfig; config.SetValue(this.TextBox1.Text,this.TextBox2.Text); } } 3.测试代码下载 /Files/singlepine/readwritconfig.rar