为asp.net程序添加自定义配置区域

我们通常把诸如sql的connection string之类的配置信息保存在web.config的AppSettings部分,以方便程序的分发,并且可以通过以下方法在程序中获得:
string sqlStr = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];

对于结构比较复杂的自定义配置,可以通过实现IConfigurationSectionHandler接口来实现这种机制。首先,创建MySettings类,该类仅包含了我需要的一些自定义配置的定义:

using  System;

namespace  myconfig
{
    
public class MySettings
    
{
        
public string SomeSetting; //自定义一个string类型的配置信息

        
public MySettings()
        
{
        }

    }

}

接下来关键的一步就是创建用于处理刚才定义好了的MySettings这类配置的MyConfigHandler,需要实现IConfigurationSectionHandler接口,IConfigurationSectionHandler只有一个方法:

object Create(
  
object parent ,
   object configContext ,
   XmlNode section
 );

因为web.config文件是一个标准的xml文件,所以可以非常简单得读出其中XmlNode的值:

using  System;
using  System.Configuration;
using  System.Xml;

namespace  myconfig
{
    
public class MyConfigHandler: IConfigurationSectionHandler
    
{
        
public MyConfigHandler()
        
{
        }

    
        
public object Create(object parent, object input, XmlNode node) 
        
{
            MySettings myset 
= new MySettings();
            
foreach (XmlNode n in node.ChildNodes) 
            
{
                
switch (n.Name)
                
{
                    
case("SomeSetting"): //从web.config读取SomeSetting的值
                        myset.SomeSetting = n.InnerText; 
                        
break;
                    
default:
                        
break;
                }

            }


            
return myset;

        }


    }

}

至此所有的自定义配置类和Handler都已经创建好了,最后只要告诉web.config用MyConfigHandler来处理MySettings就可以了,需要在web.config添加下列内容:

     < configSections >
        
< section  name ="MySettings"  type ="myconfig.MyConfigHandler,myconfig" ></ section >
    
</ configSections >
    
    
< MySettings >
        
< SomeSetting > This is a customer configuration setting. </ SomeSetting >
    
</ MySettings >

其中<configSecions>告诉web.config调用MyConfigHandler来处理MySettings,<MySettings>中保存的就是自定义的配置内容,例如在某个web page中执行如下代码:

         private  void  Page_Load( object  sender, System.EventArgs e)
        
{
            
// Put user code to initialize the page here
            MySettings myset;
            myset 
= System.Configuration.ConfigurationSettings.GetConfig("MySettings"as MySettings;

            Response.Write(myset.SomeSetting);
        }

 

得到的结果将会是在客户端显示This is a customer configuration setting。其实还有另一种更简单的方法,就是利用NameValueFileSectionHandler,但是在添加配置信息时需要像在 AppSettings中那样用<add name="" value=""></add>来添加键值,对于自定义配置来说意义不大,具体可以参考 msdn中相关的文章。

转载于:https://www.cnblogs.com/chenying99/archive/2011/04/07/2007388.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值