Web.config文件可谓是每个ASP.NET站点必不可少的一个文件,其中记录了网站的各种配置。一些比较静态但是又可能变更的数据可以放在web.config中,已有的appSettings配置节便有这种用途。

<configuration>

……

<appSettings>

<addkey="setting1"value="valueOfSetting1"/>

</appSettings>

……

</configuration>

在代码中可以用如下方式访问到添加的setting

string value = ConfigurationManager.AppSettings["setting1"];

这种方式所得到的配置的值缺点至少有二:首先不能用Intelligence来感知我设置的“字段”,其次这种方式只能存放和取出string类型的值(尽管你可以将字符串”true”转换为bool型的true,但是更复杂的类型呢?)。

但是.net框架毕竟是可扩展的,我们也可以在web.config中存放自己的配置节!

如果我在web.config中添加这样一段配置

<configuration>

……

<siteSettings>

<language>

<langsvalue="en,zh"/>

</language>

</siteSettings>

……

</configuration>

怎样通过代码来读取我们设置的值呢?

方法有两种,一种是创建继承自IConfigurationSectionHandler 接口的类,一种是创建继承自ConfigurationSection的类,由于第一种继承自接口的已经是不推荐的了,所以我就只介绍第二种了!

在App_Code下添加如下类

public class LanguageConfigSection:ConfigurationSection

{

public LanguageConfigSection()

{

//

// TODO: Add constructor logic here

//

}

[ConfigurationProperty("langs")]

public LanguageConfigElement Languages

{

get { return (LanguageConfigElement)this["langs"]; }

set { this["langs"] = value; }

}

}

public class LanguageConfigElement : ConfigurationElement

{

[ConfigurationProperty("value")]

public string Langs

{

get { return (string)this["value"]; }

set { this["value"] = value; }

}

}

当然如果这样的话web.config会很不友好的说我添加的这个配置节是外来的陌生人,不会收留的。我们需要做的是在configuration配置节下设置自己的配置节的处理方式:

<configuration>

<configSections>

<sectionGroupname="siteSettings">

<sectionname="language"type="LanguageConfigSection"/>

</sectionGroup>

</configSections>

……

</configuration>

好了,基础设施已经铺设成功了,现在迫切需要知道的是我怎么来读出我的设置!

方法如下:

LanguageConfigSection section = (LanguageConfigSection)ConfigurationManager.GetSection("siteSettings/language");

string langs = section.Languages.Langs; // 得到的结果是"en,zh"的字符串

如果你还不明白的话,不用急,我用几张图来道明白!

这只是最简单的配置(只是从web.config中取了一个string值出来),还有比如Providers那种配置就稍显复杂,而且还会用到ProviderBase之类的,在此暂时不多做介绍。这种灵活的config还是蛮有意思的,究竟是怎样来实现这种灵活的配置的呢?框架做了哪些工作?由于时间关系我还没去研究,有兴趣的朋友可以用Reflector去探个究竟。

个人第一篇博客园文章,献丑了。

转载于:https://www.cnblogs.com/LongWay/archive/2008/06/06/1214854.html

Web.config中创建自定义配置节相关推荐

  1. 使用IConfigurationSectionHandler在web.config中增加自定义配置

    VS2008.ASP.NET 3.5 一. 场景    这里仅举一个简单应用的例子,我希望在web.config里面增加网站的基本信息,如:网站名称,网站版本号,是否将网站暂时关闭等. 二. 基本实现 ...

  2. ASP.NET web.config中数据库连接字符串connectionStrings节的配置方法

    ASP.NET web.config中数据库连接字符串connectionStrings节的配置方法 第一种情况,本地开发时,使用本地数据库,如下面的代码 <connectionStrings& ...

  3. web.config文件之自定义错误节

    web.config文件之自定义错误节 大家都知道,在开发asp.net应用程序时,通过web.config文件可以配置在执行 Web 请求期间发生未处理的错误时,ASP.NET 显示信息的方式.下面 ...

  4. ASP在 Web.config 中创建数据库连接字符串

    在 Web.config 中创建数据库连接串 我们需要在网站的配置文件中增加一些行,以便 Entity Framework 知道如何连接到我们的数据库,双击Web.config 文件. 卷到文件的最后 ...

  5. web.config中namespace的配置(针对页面中引用)

    web.config中namespace的配置(针对页面中引用) 1,在页面中使用强类型时: @model GZUAboutModel @using Nop.Admin.Models//命名空间(注意 ...

  6. web.config 中SessionState的配置 [转]

    一 http://hi.baidu.com/zyb512/blog/item/28ed858b3b88c015c9fc7af9.html web Form 网页是基于HTTP的,它们没有状态, 这意味 ...

  7. web.config中的session配置详解

    打开某个应用程序的配置文件Web.config后,我们会发现以下这段: < sessionState mode="InProc" stateConnectionString= ...

  8. Web.config 无法识别的配置节 connectionStrings

    最近在WIN2000系统下一直碰到这个问题,我知道在2003下可以选择.NET的版本,但好象2000下是不能设置的,只要装了2003 和2005就可运行. 但是现在这个问题很奇怪,于是查了下 发现以下 ...

  9. ASP.NET使用ConfigurationSection在Web.Config创建自定义配置节

    主要代码,一定要继续System.Configuration.ConfigurationSection,具体的节点名称可以自行修改 using System; using System.Data; u ...

最新文章

  1. 使用C++实现Socket编程图片打包传输(修改)
  2. JavaScript的数据访问总结
  3. 健身前到底该不该吃东西
  4. C++基本入门资料搜集
  5. iOS10 资料汇总:值得回看的 10 篇 iOS 热文
  6. dbref java_查询mongodb dbref内部字段
  7. sap权限激活_sap角色权限设置手册V1.0
  8. session传递参数_JWT与Session的比较
  9. 前端_网页编程 Form表单与模板引擎(上)
  10. 1108. IP 地址无效化
  11. SQL SERVER 2012 只能识别20个CPU的问题
  12. android长截图工具下载,长截图拼接app下载
  13. segger_rtt使用帮助
  14. H5 实现类似QQ消息列表(已读,未读)拖拽点击事件功能
  15. 金属芯PCB中的贵族,热电分离铜基板(高导热380W)
  16. 3d旋转--transform-style: preserve-3d,translate3d(x,y,z),perspective()
  17. 【深度学习】(ICCV-2021)PVT-金字塔 Vision Transformer及PVT_V2
  18. 读书/纪录片笔记:《手术两百年》
  19. 即将开学,为校园网络安全助力
  20. java开发环境搭建——mysql、navicat、powerDesigner下载安装

热门文章

  1. Google C++ 编码规范
  2. 会动的图解!GMP模型里为什么要有P?背后的原因让人暖心
  3. gin 源码解析 - 详解http请求在gin中的流转过程
  4. 插入排序算法(C实现)
  5. 常用MYSQL日期查询
  6. 关于Kubernetes的常见问题
  7. Zookeeper的内存数据和持久化
  8. rabbitmq消息确认机制及死信队列的使用
  9. centos6.5 安装 OpenResty
  10. [deviceone开发]-doSpace应用源码开源