ASP.NET 配置文件是基于 XML 的文本文件(每个都命名为 web.config),可出现在 ASP.NET Web 应用程序服务器上的任何目录中。每个 web.config 文件将配置设置应用到它所在的目录和它下面的所有虚拟子目录。子目录中的设置可随意重写或修改在父目录中指定的设置。根配置文件——WinNT/ Microsoft.NET/Framework/<version>/config/machine.config,提供整台计算机的默认配置设置。ASP.NETconfiguration> 标记。ASP.NET 和最终用户设置因此封装在该标记中,如下所示:
<configuration> 标记通常包含三种不同类型的元素,1) 配置节处理程序声明,2) 配置节组,3) 配置节设置。
<configuration> <!- Configuration settings would go here. --> </configuration>
- 配置节处理程序——ASP.NET 配置结构在 web.config 文件中的文件格式或支持的设置方面不进行任何假设。相反,它将处理 web.config 数据的任务委托给配置节处理程序,即实现 IConfigurationSectionHandler 接口的 .NET 框架类。单个 IConfigurationSectionHandler 声明只需要出现一次,通常是在 machine.config 文件中。子目录中的 web.config 文件自动继承此声明。配置节处理程序通过使用嵌套在 <configSections> 标记中的节标记指令在 web.config 文件中声明。节标记可进一步由节组标记限定,将它们组织为逻辑组(参见下文)。每个节标记标识一个表示特定配置数据节的标记名和一个处理该节的关联 IConfigurationSectionHandler 类。
- 配置节组——ASP.NET 配置允许出于组织目的对节进行分层分组。<sectionGroup> 标记可显示在 <configSections> 标记的内部或其他 <sectionGroup> 标记的内部。例如,ASP.NET 节处理程序全都显示在 <system.web> 节组中。
- 配置节——ASP.NET 配置设置在配置标记节中表示,同时嵌套在 <configuration> 标记(和可选的节组标记)中。对于每个配置节,必须在 config 层次结构中定义适当的节处理程序。例如,在下面的示例中,标记 <httpModules> 是定义 HTTP 模块配置数据的配置节。System.Configuration.HttpModulesConfigurationHandler 类负责在运行时解释 <httpModules> 标记中包含的内容。注意,节处理程序定义和节必须具有相同的节组限定符(此处为 <system.web>)。还应注意,标记名区分大小写,必须按所显示的原样键入。ASP.NET 的各种属性和设置也区分大小写,并且配置运行时不检查大小写是否不匹配。
<configuration> <configSections> <sectionGroup > <section type="System.Web.Configuration.HttpModulesConfigurationHandler,System.Web" /> </sectionGroup> </configSections> <system.web> <httpModules> <add type="System.Web.SessionState.CookielessSessionModule,System.Web" /> <add type="System.Web.Caching.OutputCacheModule,System.Web" /> <add type="System.Web.SessionState.SessionStateModule,System.Web" /> <add type="System.Web.Security.WindowsAuthenticationModule,System.Web" /> <add type="System.Web.Security.FormsAuthenticationModule,System.Web" /> <add type="System.Web.Security.PassportAuthenticationModule,System.Web" /> <add type="System.Web.Security.UrlAuthorizationModule,System.Web" /> <add type="System.Web.Security.FileAuthorizationModule,System.Web" /> </httpModules> </system.web> </configuration>
使用位置和路径
默认情况下,在顶级 <configuration> 标记中定义的所有配置设置都应用到包含 web.config 文件的当前目录位置以及该位置下的所有子路径。还可通过使用具有适当的约束 path 属性的 <location> 标记,将配置设置应用到当前配置文件下的特定子路径。如果配置文件是主 machine.config 文件,则可以将设置应用到特定的虚拟目录或应用程序。如果配置文件是 web.config 文件,则可将设置应用到特定的文件、子目录、虚拟目录或应用程序。
<configuration> <location path="EnglishPages"> <system.web> <globalization requestEncoding="iso-8859-1" responseEncoding="iso-8859-1" /> </system.web> </location> <location path="EnglishPages/OneJapanesePage.aspx"> <system.web> <globalization requestEncoding="Shift-JIS" responseEncoding="Shift-JIS" /> </system.web> </location> </configuration>
锁定配置设置
除了使用 <location> 标记指定路径信息外,还可以指定安全性以使配置层次结构中的其他深层配置文件无法重写该设置。若要锁定一组设置,可以在周围的 <location> 标记上指定 allowOverride 属性并将其设置为假。以下代码锁定两个不同应用程序的模拟设置。
<configuration> <location path="app1" allowOverride="false"> <system.web> <identity impersonate="false" userName="app1" password="app1pw" /> </system.web> </location> <location path="app2" allowOverride="false"> <system.web> <identity impersonate="false" userName="app2" password="app2pw" /> </system.web> </location> </configuration>
注意,如果用户试图在其他配置文件中重写这些设置,配置系统将引发错误:
<configuration> <system.web> <identity userName="developer" password="loginpw" /> </system.web> </configuration>
标准 ASP.NET 配置节
ASP.NET 提供了若干标准配置节处理程序,用于处理 web.config 文件中的配置设置。下表提供了有关这些节的简短说明以及指向更多信息的指针。节名 | 说明 |
---|---|
<httpModules> | 负责配置应用程序中的 HTTP 模块。HTTP 模块参与处理应用程序中的每个请求。常用的用途包括安全性和记录。 |
<httpHandlers> | 负责将传入的 URL 映射到 IHttpHandler 类。子目录不继承这些设置。还负责将传入的 URL 映射到 IHttpHandlerFactory 类。<httpHandlers> 节中表示的数据由子目录分层继承。有关更多信息,请参阅本教程的 Http 处理程序和工厂一节。 |
<sessionState> | 负责配置会话状态 HTTP 模块。有关更多信息,请参阅本教程的管理应用程序状态一节。 |
<globalization> | 负责配置应用程序的全局化设置。有关更多信息,请参阅本教程的本地化一节。 |
<compilation> | 负责配置 ASP.NET 使用的所有编译设置。有关更多信息,请参阅本教程的业务对象和调试节。 |
<trace> | 负责配置 ASP.NET 跟踪服务。有关更多信息,请参阅本教程的跟踪一节。 |
<processModel> | 负责配置 IIS Web 服务器系统上的 ASP.NET 进程模型设置。 |
<browserCaps> | 负责控制浏览器功能组件的设置。有关更多信息,请参阅本教程的检索配置一节。 |