17.1 了解配置文件
.NET Framework提供的配置管理包括范围广泛的设置,允许管理员管理Web应用程序及其环境。这些设置存储在XML配置文件中,其中一些控制计算机范围的设置,而另一些控制应用程序特定的配置。
ASP.NET的配置文件为XML文件,.NET Framework定义了实现配置设置的一系列元素,并且ASP.NET配置架构包含控制ASP.NET Web应用程序的行为的元素。本节将简单介绍一下ASP.NET中的配置文件。
17.1.1 配置文件概述
程序开发人员可以使用任何文本编辑器编辑配置文件,它实际上是遵循XML文档格式的。在ASP.NET Web应用程序的配置文件中,Web.config文件最为常用,但是,除了该文件外,还有用于其他功能的配置文件。例如,配置文件可以用于应用程序,也可以用于机器和代码访问安全性。如图17-1所示为可用于配置ASP.NET Web应用程序的配置文件。
图17-1 配置ASP.NET Web应用程序的配置文件
从图17-1中可以看出:配置Web应用程序的配置文件可以有多种,Machine.config和Web.config文件共享许多相同的配置部分和XML元素。另外在该图中,Machine.config文件用于将计算机访问的策略应用到本地计算机上运行的所有.NET Framework应用程序,开发者还可以使用应用程序特定的Web.config文件自定义单个应用程序的设置。
在图17-1中的Machine.config文件包含整个服务器的配置信息;Web.config文件包含运行一个ASP.NET服务器需要的所有配置信息。
17.1.2 配置文件及其说明
根据图17-1中可以看出,用于不同功能的配置文件包含多个。开发者对配置文件所做的更改将会被动态应用,通常无须重新启动服务器或者任何服务,除非更改了Machine.config中的名称为processModel的节点元素。
例如,表17-1对图17-1中的文件进行了简单说明,并且显示了这些配置文件的位置。
表17-1 配置文件的说明及其位置
17.1.3 配置文件的保存和加载
配置文件有很多,例如配置企业级CAS的Enterprisesec.config文件、计算机级CAS的Security.config文件和Web_hightrust.config等。但是,最主要的配置文件有两个:Machine.config和Web.config。这两个文件一般都不需要开发人员手工去维护,直接保持默认的内容即可。
但是,针对ASP.NET应用程序而言,它自身会包含0个、1个或者多个Web.config配置文件。ASP.NET网站IIS启动的时候会加载这些配置文件中的配置信息,然后缓存这些信息,这样就不必每次都去读取配置信息。在运行过程中,ASP.NET应用程序会监视配置文件的变化情况,一旦编辑了这些配置信息,就会重新读取这些配置信息并且缓存。
如下所示为ASP.NET网站运行时加载配置文件的顺序。
(1)如果在当前网页所在的目录下存在Web.config文件,则查看是否存在所要查找的节点名称。如果存在则返回结果,并且停止查找。
(2)如果当前网页所在的目录下不存在Web.config文件,或者此文件中不存在该节点名,则查找它的上一级目录,直到网站的根目录。
(3)如果网站根目录下不存在Web.config文件,或者此文件中不存在该节点名,则转到“Windows目录\Microsoft.NET\Framework\对应.net版本\config\Web.config”中进行查找。
(4)如果在上一条的文件夹下还没有找到相应节点,则在“Windows目录\Microsoft.NET\Framework\对应.net版本\config\machine.config”中进行查找。
(5)如果仍然没有找到相应的节点,则返回null。
通常情况下,开发人员对某个网站或者某个文件夹有特定的要求配置时,可以在相应的文件夹下创建一个Web.config文件,这样会覆盖一级文件夹Web.config文件中的同名配置文件,这些配置信息只查找一次,以后就会被缓存起来供后来的调用。
ASP.NET应用程序运行过程中,Web.config文件发生更改就会导致相应的应用程序重新启动,这时存储在服务器内存中的用户会话信息就会丢失(如存储在内存中的Session)。一些软件(如杀毒软件)每次完成对Web.config的访问时就会修改Web.config的访问时间属性,也会导致ASP.NET应用程序的重启。