[摘要]对于任何的WEB应用程序服务器,一个主要的要求就是具有丰富而且灵活具有柔韧性的配置系统——使开发者能够让“可安装的应用程序”容易地与“设置数据”联系,而无须将设置值置入程序代码,而且,能使Admin...
对于任何的WEB应用程序服务器,一个主要的要求就是具有丰富而且灵活具有柔韧性的配置系统——使开发者能够让“可安装的应用程序”容易地与“设置数据”联系,而无须将设置值置入程序代码,而且,能使Administrators方便容易地调整、定制这些设置值 Post-deployment。
ASP+ 配置系统致力于满足这两个必要条件。为做到这些,它通过了一个分级的配置基础结构,以使扩展的配置数据可以保存,而且贯穿使用在整个ASP+应用程序当中。同时,ASP+提供了丰富的初始设置集合。
ASP+配置系统提供了一下好处:
1、配置信息存储在基于XML的配置文件当中。管理员和开发者能够使用任何标准文本编辑器,XML解析器,或PERL脚本来解释和更新配置设定。
2、配置信息存放在文件中,它作为应用程序的其他部分放置在与其相同的目录树下。这使ASP+应用程序非常容易安装,只需使用 Xcopy 或者是 FTP。
3、配置系统易于扩展。你可以在配置系统中存放自己的配置标准以及设置。
4、对ASP+配置文件的更改由系统自动检测,在无须用户干涉的情况下被提交。系统管理员不需要去动系统以让改变生效。
5、配置信息被分级提交应用。子目录继承或覆盖从父目录得来的配置设定。这就允许不同的应用程序或单个应用程序的不同部分具有不同的设定。
Config.web 配置文件
所有ASP+的配置信息都包括在名叫Config.web的配置文件当中。下面的例子说明了一个ASP+配置文件的结构:
代码:
--------------------------------------------------------------
<!-- CONFIG.WEB FILE -->
<configuration>
<configsections>
<add names="httpmodules" type="System.Web.Config.HttpModulesConfigHandler"/>
<add names="httphandlers" type="System.Web.Config.HttpHandlerConfigHandler"/>
<add names="sessionstate" type="System.Web.Config.SessionStateConfigHandler"/>
<add names="globalization" type="System.Web.Config.GlobalizationConfigHandler"/>
<!-- ADDITIONAL CONFIGSECTION DECLARATIONS GO HERE -->
</configsections>
<httpmodules>
<!-- http module subelements go here -->
</httpmodules>
<httphandlers>
<!-- http handlers subelements go here -->
</httphandlers>
<sessionstate>
<!-- session state subelements go here -->
</sessionstate>
<globalization>
<!-- session state subelements go here -->
</globalization>
<!-- ADDITIONAL CONFIG SECTIONS GO HERE -->
</configuration>
---------------------------------------------------------------
所有的配置信息都必须居于<configuration>和</configuration>标记之间。配置文件有两个主要部分。在上部是配置小节的处理程序声明(包括在<configsection>和</configsection>标记中)。文件的其余部分包括了实际的配置小节(为了清楚,它们的子元素已被移除)。注意,下面的每一个配置小节都必须对应有一个<configsection>中的声明存在。每一个声明赋予了配置小节名称并且指出了将处理其配置信息的NGWS Framework Assembly及Class。每一配置小节包含含有ASP+细节配置设定的子元素。
以下代码举例说明了这些概念:
代码:
-----------------------------------------------------------------
<configuration>
<configsections>
<add name="debugmode" type="System.Web.Config.SingleTagSectionHandler" />
<add name="globalization" type="System.Web.Config.SingleTagSectionHandler" />
<add name="assemblies" type="System.Web.UI.AssembliesSectionHandler" />
<add name="security" type="System.Web.Config.SecurityConfigHandler" />
</configsections>
<debugmode enable="true" />
<globalization
requestencoding="us-ascii"
responseencoding="iso-8859-1"
/>
<assemblies>
<add assembly="System.Data.dll"/>
<add assembly="System.dll"/>
<add assembly="System.Drawing.dll"/>
<add assembly="*"/>
</assemblies>
<security>
<authorization>
<allow users="*" /> <!-- Allow all users -->
</authorization>
</security>
</configuration>
-------------------------------------------------------------------
此例说明了一个配置文件,它包含四个配置小节——debugmode,globalization,assemblies以及security。下面是已制定的设置:
*在debug小节,调试模式被打开(设置成true)。
*在globalization小节,设置了请求(Request)和回应(Response)的编码方式。
*在assemblies小节,加入了四个assemblie。
*在security小节,所有用户均被赋予访问权。
层次配置体系
我们曾论及,服务器上可以有多个配置文件存在于不同的目录中。当对一个详细URL的请求到达时,ASP+计算该URL在层次结构风格中的设定,并为所请求的URL使用在路径中定位的配置文件。
例如,一个站点的结构如下:
Application Root
关键词:ASP+设置概念