C#中对Web.config配置文件的操作(增删改读)

来源:互联网 发布:东京物语 知乎 编辑:程序博客网 时间:2024/05/16 15:14

C#中对Web.config配置文件的操作(增删改读)

using System;
using System.Configuration;
using System.Reflection;
using System.Web;
using System.Xml;
public enum ConfigFileType
{
 WebConfig,
 AppConfig
}

namespace ConfigRW
{
 /// <summary>
 /// Summary description for ReadWriteConfig.
 /// </summary>
 public class ReadWriteConfig
 {  
  public string docName = String.Empty;
  private XmlNode node=null;   
  private int _configType;
  public string message;
  public int ConfigType
  {
   get{ return _configType; }
   set{ _configType=value; }
  } 

  #region GetValue
  public string GetValue( string key )
  {   //读取
   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     
    XmlElement addElem= (XmlElement)node.SelectSingleNode("//add[@key='" +key +"']") ;
    if(addElem == null)
    {
     message = "此key不存在!";
     return message;
    }
    message = System.Configuration.ConfigurationSettings.AppSettings[key];
    return message;
   }
   catch
   {
    message = "操作异常,获取value值失败!";
    return message;
   }
  }
  #endregion

  #region SetValue
  public string 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)
    {
     message = "此key已经存在!";
     return message;
    }   
    // 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);  
    message = "添加成功!";
    return message;
   } 
   catch
   {
    message = "操作异常,添加失败!";
    return message;
   }
  } 
       
  #endregion

  #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

  #region removeElement
  public string 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");
    } 
  
    XmlElement addElem= (XmlElement)node.SelectSingleNode("//add[@key='" +elementKey +"']") ;
    if(addElem == null)
    {     
     message = "此key不存在!";
     return message;
    }   
    // XPath select setting "add" element that contains this key to remove     
    node.RemoveChild( node.SelectSingleNode("//add[@key='" +elementKey +"']") );
    saveConfigDoc(cfgDoc,docName); 
    message = "删除成功!";
    return message;
   }
   catch
   {
    message = "操作异常,删除失败!";
    return message;
   }
  }       
  #endregion

  #region modifyElement
  public string modifyElement (string elementKey, string elementValue)
  { //修改
   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     
    XmlElement addElem= (XmlElement)node.SelectSingleNode("//add[@key='" +elementKey +"']") ;
    if(addElem == null)
    {
     message = "此key不存在!";
     return message;
    }
    
    addElem.SetAttribute("value",elementValue);
    //save it  
    saveConfigDoc(cfgDoc,docName);
    message = "修改成功!";
    return message;
   }
   catch
   {
    message = "操作异常,修改失败!";
    return message;
   }
  }       
  #endregion

  #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
 }
}

 

测试页面

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace ConfigRW
{
 /// <summary>
 /// Summary description for WebForm1.
 /// </summary>
 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 Button4;
  protected System.Web.UI.WebControls.Button Button2;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   
  }

  #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.Button4.Click += new System.EventHandler(this.Button4_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;
   Response.Write(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;
   Response.Write(config.removeElement(this.TextBox1.Text));
  }

  private void Button3_Click(object sender, System.EventArgs e)
  {
   //修改
   ReadWriteConfig config = new ReadWriteConfig();  
   config.ConfigType = (int)ConfigFileType.WebConfig;
   Response.Write(config.modifyElement(this.TextBox1.Text,this.TextBox2.Text));
  }

  private void Button4_Click(object sender, System.EventArgs e)
  {
   //读取
   ReadWriteConfig config = new ReadWriteConfig();  
   config.ConfigType = (int)ConfigFileType.WebConfig;
   this.TextBox2.Text = config.GetValue(this.TextBox1.Text);
  }
 }
}