您可以在整个应用程序目录中分发 ASPNET 配置文件以便以继承层次结构配置 ASPNET 应用程序使用此结构可以在适当的目录级别实现应用程序所需级别的配置详细信息而不影响较高目录级别中的配置设置
配置结构
ASPNET 配置文件称为 nfig 文件它们可以出现在 ASPNET 应用程序的多个目录中ASPNET 配置层次结构具有下列特征
使用应用于配置文件所在的目录及其所有子目录中的资源的配置文件
允许您将配置数据放在将使它具有适当范围(整台计算机所有的 Web 应用程序单个应用程序或该应用程序中的子目录)的位置
允许重写从配置层次结构中的较高级别继承的配置设置还允许锁定配置设置以防止它们被较低级别的配置设置所重写
将配置设置的逻辑组组织成节的形式
配置继承
所有的 NET Framework 应用程序都从一个名为 systemroot\Microsoft NET\Framework\versionNumber\CONFIG\nfig 的文件继承基本配置设置和默认值nfig 文件用于服务器级的配置设置其中的某些设置不能在位于层次结构中较低级别的配置文件中被重写
NET 客户端应用程序(控制台和 Windows 应用程序)使用名为 nfig 的配置文件来重写继承的设置ASPNET 应用程序使用名为 nfig 的配置文件来重写继承的设置
ASPNET 配置层次结构的根是一个称为根 nfig 文件的文件它与 nfig 文件位于同一个目录中根 nfig 文件继承 nfig 文件中的所有设置根 nfig 文件包括应用于所有运行某一具体版本的 NET Framework 的 ASPNET 应用程序的设置由于每个 ASPNET 应用程序都从根 nfig 文件那里继承默认配置设置因此只需为重写默认设置的设置创建 nfig 文件
集合元素中的继承
某些配置元素是集合例如namespaces 元素和 customErrors 元素
在集合中通常通过 add 子元素向集合中添加配置设置通过 remove 子元素按键名移除配置设置或者可以通过 clear 子元素清除整个集合除非允许使用重复项否则在子配置文件中添加的设置将重写父配置文件中同一键名的设置
注意
存在于早期版本的 NET Framework 中的某些集合对 add 子元素使用不同的元素名称例如customErrors 元素使用 error 子元素向集合中添加自定义错误
如果收到针对 SubDir 目录中不存在的文件发出的请求ASPNET 将开始搜索配置层次结构并从最本地的 nfig 文件(如果存在可能位于当前目录中也可能位于当前目录的父目录中)开始ASPNET 将搜索 statusCode 属性等于的 customErrors 的 error 元素(ASPNET 设置架构)元素一旦 ASPNET 在配置设置中找到 错误将 redirect 属性中的 URL 作为响应返回
配置设置的范围
配置设置具有不同的范围 有些具有全局范围有些仅对应用程序范围(根 nfig 文件或 nfig 文件)有效
配置节的范围是在 nfig 文件中的 configSections 的 section 元素(常规设置架构)元素的 allowDefinition 属性中为包含在 ASPNET 中的所有节定义的例如authentication 元素(ASPNET 设置架构)元素具有 MachineToApplication 元素的 allowDefinition 属性这意味着authentication 元素可以在应用程序级别的 nfig 文件根 nfig 文件和 nfig 文件中设置如果它是在子目录级别设置的则会引发错误如果没有为某个节定义 allowDefinition 属性则默认值为 Everywhere
元素信息表中可配置的位置旁边列出了 ASPNET 配置设置 和 常规配置设置 (ASPNET) 中每个元素的配置设置范围
下表列出了每个文件在配置层次结构中的级别每个文件的名称以及对每个文件的重要继承特征的说明
配置级别 文件名 文件说明
服务器 nfig nfig文件包含服务器上所有 Web 应用程序的 ASPNET 架构此文件位于配置合并层次结构的顶层
根Web nfig 服务器的 nfig 文件与 nfig 文件存储在同一个目录中它包含大部分 systemweb 配置节的默认值运行时此文件是从配置层次结构中的从上往下数第二层合并的
网站 nfig 特定网站的 nfig 文件包含应用于该网站的设置并向下继承到该站点的所有 ASPNET 应用程序和子目录
ASPNET应用程序根目录 nfig 特定 ASPNET 应用程序的 nfig 文件位于该应用程序的根目录中它包含应用于 Web 应用程序并向下继承到其分支中的所有子目录的设置
ASPNET 应用程序子目录 nfig 应用程序子目录的 nfig 文件包含应用于此子目录并向下继承到其分支中的所有子目录的设置
客户端应用程序目录 nfinfig 文件包含 Windows 客户端应用程序(而非 Web 应用程序)的设置
ProcessModel 元素
processModel 元素(ASPNET 设置架构)元素配置用于服务器(包括服务器上的所有 ASPNET 应用程序)的处理模型因此processModel 设置只能放在 nfig 文件中而且不能被任何 nfig 文件中的设置重写
对 processModel 元素的更改将只有在辅助进程重新启动之后才生效而不是像其他配置元素那样在设置更改之后立即生效
注意
当 ASPNET 以辅助进程隔离模式运行在 Internet 信息服务 (IIS) 中时将使用 IIS 进程模型并将忽略 nfig 文件的 processModel 节中的设置若要配置进程标识循环或其他进程模型值请使用 IIS 管理器来配置应用程序的 IIS 辅助进程
运行时计算配置设置
当服务器接收对特定 Web 资源的请求时ASPNET 使用位于所请求 URL 的虚拟目录路径中的所有配置文件按层次结构计算该资源的配置设置本地配置设置将重写父配置文件中的设置
这些设置计算一次随后将缓存以供后续请求使用ASPNET 自动监视对文件进行的更改并在该文件的层次结构内的任何配置文件发生更改时重新计算缓存当服务器收到对特定 URL 的请求时ASPNET 将使用缓存中的配置设置层次结构来找到所请求的资源
除非配置节元素中包括 restartOnExternalChanges=false 属性或者配置设置包含在使用 configSource 属性链接到 nfig 文件的单独文件中否则当配置发生更改时应用程序将重新启动
单个文件中配置的多个 ASPNET 资源
当管理大量配置设置或者管理 ISP 设置中的客户端网站时将多个位置的设置存储在一个 nfig 文件中可能会非常有用使用 location 元素的 path 属性可以对存储在应用程序子目录中的多个特定的 ASPNET 资源进行配置
有关如何使用 location 元素的信息请参见如何:使用位置设置配置特定目录
虚拟目录中的设置和物理目录中的设置发生沖突
虚拟目录的配置设置独立于物理目录结构必须小心组织虚拟目录以防止出现配置问题例如您可能有一个具有如下物理目录结构且名为 MyResourceaspx 的 ASPNET 文件
C:
\Subdir
\Subdir
\MyResourceaspx
另外您还可能拥有一个位于 Subdir 的配置文件一个映射到 c:\Subdir 的名为 Vdir 的虚拟目录以及一个映射到 c:\Subdir\Subdir 的名为 Vdir 的虚拟目录如果客户端使用 URL x 访问物理位置为 c:\Subdir\Subdir\MyResourceaspx 的资源则该资源将从 Vdir 继承配置设置但是如果客户端使用 URL x 访问同样的资源则该资源不从 Vdir 继承设置以这种方式创建虚拟目录可能会导致意外的结果甚至会导致应用程序失败建议您不要嵌套虚拟目录如果不得不这样做的话请只使用一个 nfig 文件
限制 ASPNET 继承
您可能希望限制配置设置的继承以增强应用程序的性能保持高可靠性并简化管理限制功能由 allowOverridelockAttributeslockAllAttributesExceptlockAllElementsExceptlockItem 和 lockElements 属性控制有关这些属性的更多信息请参见msdn