|
在 .NET 1.1 中,我们都知道可以使用 app.config 或者 web.config (ASP.NET) 来保存一些设置。可是对于大多数人来说,可能用的最多的只是把它当作一个简单的 ini 文件来存储 key-value 键值对,比如数据库链接字符串,上传文件路径之类的。但是实际上配置文件里可以存放任意复杂的结构。如果读过 DNN,.Text 之类程序的代码,就可以找到这些应用的范例。不过这些项目的代码一般都比较繁杂,因此这里我结合 .Text 的配置方法,对配置文件的用法来做一个简单的小结。
一、最简单的写法,只用到 appSettings 元素。
appSettings 里的设定在 ConfigurationSettings 类里有默认的属性来访问,他返回的是一个 NameValueCollection 子类的实例。所以通常简单的字符串值可以保存在这里。写法如下:
<? xml version="1.0" encoding="utf-8" ?> < configuration > <!-- 最简单的,在 appSettings 里面写 --> < appSettings > <!-- 定义两个键值 --> < add key ="key1" value ="123" /> < add key ="key2" value ="456" /> </ appSettings > </ configuration >
读取的代码:
string key1 = ConfigurationSettings.AppSettings["key1"]; string key2 = ConfigurationSettings.AppSettings["key2"];
二、稍微加点料。。
appSettings 中不仅仅可以用 add 来添加键值,还可以用 clear 或 remove 元素。
clear 的意思是,去除父层次的配置文件中定义的所有键值。
所谓“父层次”的意思是,比如我们在 ASP.NET 中,当我们用 ConfigurationSettings.AppSettings[key] 去读取一个值的时候,首先会去检查 machine.config 里是否有此键值的配置,然后再去读取 web.config. 另外,如果在不同的目录层次中配置 web.config,则子目录中 web.config 的配置会覆盖父目录中的设置。那么这里 machine.config 相对于当前的 web.config, 或者父目录的 config 文件相对于子目录的 config 文件,就是一个父子层次的关系。
remove 则可以移除一个父层次中设定的键值。
加入这两种语法后的配置文件如下:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <!-- 最简单的,在 appSettings 里面写 --> <appSettings> <!-- 这个命令可以删除更高层次中已经定义的所有设置 --> <clear /> <!-- 这个命令删除一个设置 --> <remove key="somekey" /> <!-- 添加设置 --> <add key="key1" value="123" /> <add key="key2" value="456" /> </appSettings> </configuration>
(注:remove 和 clear 同样适用于下面将要提到的 section 和 sectionGroup 定义的元素当中可以用 add 的地方,不再一一阐述)
三、节处理器 (Section Handlers)
在配置文件里除了 appSettings, 还可以自已写 XML 格式的配置元素,这些元素叫做节(Section)。当然,如果你自己写一堆复杂的 XML 格式的标签,.NET 自身是不知道如何解析的,因此这里就需要你在指定节的同时,告诉 .NET 如何处理它们,也就是定义“节处理器”(Section Handlers)。
每一个自定义的节,都需要在 configSections 下面定义它们的节处理器。先来看一个例子:
<?xml version="1.0" encoding="utf-8" ?>
上一篇:修改IIS目录的Asp.Net版本
下一篇:ASP.net在线求职招聘系统完全解析
|