所有 ASP.NET 配置信息都位于 Web.config 文件的 configuration
根元素中,并且被划分成两个主要分组:配置段处理器定义区和配置段设置区。
定义配置段处理器
配置段处理器的定义位于 Web.config 文件的 configSections
元素中。在配置段处理器被定义之后会包含一个用于定义配置的 section
元素。配置段处理器定义可以被嵌套在 sectionGroup
元素中以助于组织配置信息。通常,sectionGroup
元素会展示配置所应用的命名空间。比如,将所有 ASP.NET 配置段处理器都分组在 system.web
配置段中的代码如下。
<sectionGroup name="system.web" type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <!-- <section /> 元素。 --> </sectionGroup>
配置段设置区的每个配置段有各自的处理器定义。配置段处理器是一个实现了 ConfigurationSection
接口的 .NET Framework 类。配置段处理器定义中包含有配置段名称(如 pages
)和配置段中对数据进行处理的处理器类的名称(如 code
System.Web.Configuration.PageSection)。参考下例代码。
<section name="pages" type="System.Web.Configuration.PagesSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> </section>
开发者每次只能够定义一个配置段处理器。ASP.NET 默认的配置段处理器在 Machine.config 文件中预先定义。并且 ASP.NET 中的 Web.config 根文件和其他配置文件都自动从 Machine.config 文件所定义的配置处理器所派生。如果要创建自定义处理器类,就必须先对新的配置段处理器进行定义。
设置配置段
配置段处理器定义区的后面就是包含实际配置的设置区。
默认时,任何内在于或与根目录配置一体的文件中,都有指派给每个 configSection
区域中 sectionGroup
子元素的配置段元素。可以通过 %SystemRoot%\Microsoft.NET\Framework\版本号\CONFIG\Machine.config.comments 文件查看到相关内容。
配置段元素包含的子元素同样可以被父元素的处理器进行处理。比如,因为下例所示的 pages
元素被 pages
配置段处理器,所以没有为子元素 namespaces
指定相应的处理器。
<pages buffer="true" enableSessionState="true" asyncTimeout="45" <!-- 其他参数。 --> > <namespaces> <add namespace="System" /> <add namespace="System.Collections" /> </namespaces> </pages>
Web.config 文件实例
下例所示的 Web.config 文件将与上述代码配合使用。要注意的是并没有为 pages
元素的 namespaces
子元素定义处理器。这是因为 System.Web.Configuration.PageSection
的配置段处理器会处理 pages
中的所有子元素。
<?xml version="1.0" encoding="us-ascii"?> <configuration> <!-- 配置段处理器的定义区。 --> <configSections> <sectionGroup name="system.web" type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <section name="pages" type="System.Web.Configuration.PagesSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <!-- 其他 <section /> 元素。 --> </sectionGroup> <!-- 其他 <sectionGroup /> 和 <section /> 元素。 --> </configSections> <!-- 配置段的设置区。 --> <pages buffer="true" enableSessionState="true" asyncTimeout="45" <!-- 其他参数。 --> > <namespaces> <add namespace="System" /> <add namespace="System.Collections" /> </namespaces> </pages> <!-- 其他配置段元素。 --> </configuration>
编辑问题
因为配置段中的元素必须以定义良好的 XML 格式存在,所以元素和参数对于字母大小写也是敏感的。另外,可以通过多种方式对配置文件进行编辑。
ASP.NET 配置文件的自定义处理器必须在使用自定义元素之前通过编程来创建。
配置文件的 Path
参数集
引用 Web 应用程序的路径时,Web.config 文件的 path
参数集中可以使用代表应用程序根目录的 "~/" 符号作为路径的开始。