利用程序动态管理Web.config文件

Web.config文件假设有如下需要管理的配置信息:  

<appSettings>
   
<add key="SiteTitle" value="站点名称" />
   
<add key="SiteUrl" value="主页网址" />
   
<add key="SiteLogo" value="站点Logo" />
   
<add key="SiteBanner" value="站点Banner" />
   
<add key="SiteEmail" value="联系Email" />
</appSettings>

实现的c#核心代码:

一、将Web.config中的相关信息读入TextBox


private void Page_Load(object sender, System.EventArgs e)
 
{
  
if(!Page.IsPostBack)
  
{
   
//将Web.config中的相关值填入TextBox
   this.txtTitle.Text=System.Configuration.ConfigurationSettings.AppSettings["SiteTitle"];
   
this.txtUrl.Text=System.Configuration.ConfigurationSettings.AppSettings["SiteUrl"];
   
this.txtLogo.Text=System.Configuration.ConfigurationSettings.AppSettings["SiteLogo"];
   
this.txtBanner.Text=System.Configuration.ConfigurationSettings.AppSettings["SiteBanner"];
   
this.txtEmail.Text=System.Configuration.ConfigurationSettings.AppSettings["SiteEmail"];
  }


 }


二、将修改后的内容写入Web.config

 
private void btnSave_Click(object sender, System.EventArgs e)
 
{
  
string filename=Server.MapPath("web.config");
  
string KeyName;//键名称

  XmlDocument  xmldoc
= new XmlDocument();
  
try
  
{
   xmldoc.Load(filename);
  }

  
catch
  
{
   Response.Write(
"<script>alert('读文件时错误,请检查 Web.config 文件是否存在!')</script>");
   
return;
  }

  
  XmlNodeList DocdNodeNameArr
=xmldoc.DocumentElement.ChildNodes;//文档节点名称数组
  foreach(XmlElement DocXmlElement in DocdNodeNameArr)
  
{
   
if(DocXmlElement.Name.ToLower()=="appsettings")//找到名称为 appsettings 的节点
   {
    XmlNodeList KeyNameArr
=DocXmlElement.ChildNodes;//子节点名称数组
    if ( KeyNameArr.Count >0 ) 
    
{
     
foreach(XmlElement xmlElement in KeyNameArr)
     
{
      KeyName
=xmlElement.Attributes["key"].InnerXml;//键值
      switch(KeyName)
      
{
       
case "SiteTitle":
        xmlElement.Attributes[
"value"].Value=this.txtTitle.Text;
        
break;
       
case "SiteUrl":
        xmlElement.Attributes[
"value"].Value=this.txtUrl.Text;
        
break;
       
case "SiteLogo":
        xmlElement.Attributes[
"value"].Value=this.txtLogo.Text;
        
break;
       
case "SiteBanner":
        xmlElement.Attributes[
"value"].Value=this.txtBanner.Text;
        
break;
       
case "SiteEmail":
        xmlElement.Attributes[
"value"].Value=this.txtEmail.Text;
        
break;

      }

     }

    }

   }

  }

  
try
  
{
   xmldoc.Save(filename);
   Response.Write(
"<script>alert('OK,信息已保存!')</script>");
  }

  
catch
  
{
   Response.Write(
"<script>alert('写文件时错误,请检查 Web.config 文件是否存在!')</script>");
   
return;
  }


 }
 
posted on 2005-11-10 11:42  IORICC  阅读(234)  评论(0编辑  收藏  举报