逆水行船

别人的天堂,是我的异乡;无端的繁华,倍添我的惆怅

 

在vs2005的web site项目中读取web.config文件

任务:
读取下面xml中的某些信息(该XML从web.config中摘取):

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
    <configSections>
      <section name="RemotingCompress" type="Confige.RemotingCompressSection, 程序集名称"
               allowDefinition="Everywhere" allowExeDefinition="MachineToApplication" restartOnExternalChanges="true"/>
    </configSections>
  <connectionStrings/>
  <RemotingCompress CompressLevel="xuminrong" CompressCacheSize="79" UnCompressCacheSize="79" MinCompressSize="0"/>
  <appSettings>
    <!-- 数据库服务器名称 -->
    <add key="TestConfiguate" value="这是一个测试"/>
  </appSettings>
</configuration>


实现:

1:RemotingCompressSection 类:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace Confige
{
    public class RemotingCompressSection : System.Configuration.ConfigurationSection
    {
        [ConfigurationProperty("CompressLevel")]
        public string CompressLevel
        {
            get
            {
                return (string)this["CompressLevel"];
            }
            set
            {
                this["CompressLevel"] = value;
            }
        }
      

 

[ConfigurationProperty("CompressCacheSize", DefaultValue = "40960", Options = ConfigurationPropertyOptions.None)]
        public string CompressCacheSize
        {
            get
            {
                return (string)this["CompressCacheSize"];
            }
            set
            {
                this["CompressCacheSize"] = value;
            }
        }

           [ConfigurationProperty("UnCompressCacheSize", DefaultValue = "40960", Options = ConfigurationPropertyOptions.None)]
        public string UnCompressCacheSize
        {
            get
            {
                return (string)this["UnCompressCacheSize"];
            }
            set
            {
                this["UnCompressCacheSize"] = value;
            }
        }

      }
}


2: 前台页面:_Default

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using Confige;
public  partial class _Default : System.Web.UI.Page
{

   protected void Page_Load(object sender, EventArgs e)
    {

        RemotingCompressSection obj = new RemotingCompressSection();
        Response.Write(obj.CompressLevel + obj.CompressCacheSize +  obj.UnCompressCacheSize);
        Response.WriteSystem.Configuration.ConfigurationSettings.AppSettings["TestConfiguate"]);
       
    }
}

3:分析
1)RemotingCompressSection 类必须继承自System.Configuration.ConfigurationSection。
2)对<Add/>元素的读取,与1.1中没有什么改变。
3)注意大小写敏感。
4)关于定制特性ConfigurationProperty的问题:自己去查找相关资料。
5)<section name="RemotingCompress" type="Confige.RemotingCompressSection, 程序集名称" ...
解析:Confige.RemotingCompressSection:解析该配置文件的类名称
程序集名称:解析类所在的程序集的名称。
RemotingCompress:对应于<RemotingCompress/>元素,有点像元素声明。

4:疑问
1)找不到命名空间。
   解决:要想要命名空间,自己加。
2)找不到程序集名称。
   解决:至今没有解决。

参考文章:
 

http://xrinehart.cnblogs.com/archive/2005/12/03/289978.html  
(革新:NET20的自定义配置文件体系初探.doc)




 

posted on 2005-12-23 16:11  荣-  阅读(1043)  评论(1编辑  收藏  举报

导航