ASP.NET 配置 API 概述

更新:2007 年 11 月

使用 ASP.NET 配置 API,可以通过使用单个编程接口来开发、部署和管理应用程序配置数据。使用配置 API,可以通过编程方式来开发和修改完整的 ASP.NET 配置,而无需直接在配置文件中编辑 XML。另外,还可以在基于 Web 的管理工具和 Microsoft 管理控制台 (MMC) 管理单元中,在所开发的控制台应用程序和脚本中使用配置 API。以下两个配置管理工具使用配置 API 并且包含在 .NET Framework 2.0 版中:

  • ASP.NET MMC 管理单元,此管理单元使用配置 API 简化管理任务,并为配置层次结构中所有级别的本地配置数据提供一个集成视图。

  • 网站管理工具,使用此工具,可以管理本地和远程应用程序(包括承载的站点)的配置设置。

ASP.NET 配置 API 不同于 Internet 信息服务 (IIS) 编程配置 API。有关更多信息,请参见 Using IIS Programmatic Administration(使用 IIS 编程管理)

配置 API 功能

ASP.NET 配置 API 由一组 ASP.NET 管理对象组成,您可以使用这些对象以编程方式配置网站和应用程序。管理对象是作为 .NET Framework 类库来实现的。配置 API 编程模型在编译时强制使用数据类型,从而有助于确保代码的一致性和可靠性。

为了简化应用程序配置的管理,配置 API 允许您将从配置层次结构中的所有点合并的数据视为单个集合,而不是将这些数据视为来自不同配置文件的单独集合。另外,使用配置 API,还可以操作整个应用程序配置,而无需直接在配置文件中编辑 XML。最后,配置 API 还通过支持各种管理工具(如网站管理工具)来简化配置任务。

配置 API 通过支持在计算机上创建配置文件并支持跨多台计算机运行配置脚本来简化部署。

配置 API 不支持创建 IIS 应用程序。有关为 IIS 编写管理应用程序的信息,请参见 IIS SDK 中的 Using System.DirectoryServices to Configure IIS(使用 System.DirectoryServices 来配置 IIS)

使用本地和远程配置设置

Configuration 对象表示应用于特定物理实体(如计算机)或逻辑实体(如应用程序或网站)的配置设置的合并视图。指定的逻辑实体可以存在于本地计算机或远程服务器上。

如果指定实体没有对应的配置文件,则 Configuration 对象将表示 Machine.config 文件定义的默认配置设置。

可通过使用打开配置的方法之一,从下列类获取 Configuration 对象:

这些方法将返回 Configuration 对象,该对象又提供处理基础配置文件所需的方法和属性。您可以访问这些文件以进行读取或写入。

  • 读取   使用 GetSectionGetSectionGroup 方法读取配置信息。进行读取的用户或进程必须对层次结构中的所有配置文件具有读取权限。

    ms228060.alert_note(zh-cn,VS.90).gif说明:

    如果您使用静态 GetSection 方法,而且该方法使用 path 参数,则 path 参数必须引用运行此代码的应用程序。否则,将忽略该参数,并返回当前正在运行的应用程序的配置信息。

  • 写入   使用 Save 方法之一写入配置信息。进行写入的用户或进程必须对配置层次结构中当前级别的配置文件和目录具有写入权限,而且还必须对该层次结构中的所有配置文件具有读取权限。

若要生成一个配置文件以表示指定实体的继承配置设置,请使用保存配置的下列方法之一:

  • 用来创建新配置文件的 Save 方法。

  • 用来在另一个位置生成新配置文件的 SaveAs 方法。

ms228060.alert_note(zh-cn,VS.90).gif说明:

若要启用对远程计算机上的配置设置的访问,请使用 Aspnet_regiis 命令行工具。有关此工具的更多信息,请参见 ASP.NET IIS 注册工具 (Aspnet_regiis.exe)。有关创建和访问自定义配置设置(.NET Framework 附带的内部节除外)的信息,请参见 ConfigurationSection

代码示例

从 ASP.NET 页中,可以使用以下代码来获取有关运行 ASP.NET 页的应用程序的配置信息。此代码示例使用静态 WebConfigurationManager.GetSection 方法。

System.Web.Configuration.UrlMappingsSection urlMaps =
    (System.Web.Configuration.UrlMappingsSection)
    System.Web.Configuration.WebConfigurationManager.GetSection(
    "system.web/urlMappings");
Bool urlMappingsEnabled = urlMaps.IsEnabled;

从 ASP.NET 应用程序或客户端应用程序中,可以使用以下代码来获取有关单独应用程序的配置信息。此代码示例使用 System.Configuration.Configuration 对象的非静态 GetSection 方法。

System.Configuration.Configuration config =
    System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(
    "/SampleWebApp");
System.Web.Configuration.UrlMappingsSection urlMaps =
    (System.Web.Configuration.UrlMappingsSection)
    System.Web.Configuration.WebConfigurationManager.GetSection(
    "system.web/urlMappings");
bool urlMappingsEnabled = urlMaps.IsEnabled;

配置类和命名空间

许多配置类和方法彼此类似。下表描述了最常用的配置类和命名空间。有关使用这些类和命名空间的用法方案和代码示例的信息,请参见使用配置类

配置类或命名空间

说明

System.Configuration 命名空间

包含所有 .NET Framework 应用程序的主配置类。这包括 .NET Framework 的配置文件架构 中定义的 .NET Framework 客户端配置节的节处理程序类。节处理程序类用于从方法(如 GetSectionGetSectionGroup)获取节的配置数据。这两种方法是非静态的。有关更多信息,请参见本主题前面的使用静态和非静态方法一节。

ASP.NET 节处理程序类包含在 System.Web.Configuration 命名空间中。

System.Configuration.Configuration

表示计算机、应用程序、Web 目录或其他资源的一组配置数据。Configuration 类的实例与包含在层次结构中的合并配置设置对应。

该类包含用于更新配置设置并获取对节和节组的引用的方法,如 GetSectionGetSectionGroup。这两种方法是非静态的。有关更多信息,请参见本主题前面的使用静态和非静态方法一节。

此类用作获取设计时配置数据的方法(如 WebConfigurationManagerConfigurationManager 类的方法)的返回类型。

System.Web.Configuration 命名空间

包含 ASP.NET 配置设置 中定义的 ASP.NET 配置节的节处理程序类。节处理程序类用于从方法(如 GetSectionGetSectionGroup)获取节的配置数据。这两种方法是静态的。有关更多信息,请参见本主题前面的使用静态和非静态方法一节。

System.Web.Configuration.WebConfigurationManager

提供用来获取对运行时和设计时配置设置的引用的方法。这些方法将 System.Configuration.Configuration 类用作返回类型。您可以将该类的静态 GetSection 方法与 System.Configuration.ConfigurationManager 类的非静态 GetSection 方法互换使用。有关更多信息,请参见本主题前面的使用静态和非静态方法一节。

对于 Web 应用程序配置,建议使用 System.Web.Configuration.WebConfigurationManager 类,而不要使用 System.Configuration.ConfigurationManager 类。

System.Configuration.Provider 命名空间

提供一种用来对配置提供程序进行自定义和扩展的方法。这是配置系统中所有提供程序类的基类。

System.Web.Management 命名空间

包含用来管理和监视 Web 应用程序运行状况的类和接口。严格说来,此命名空间不被视为配置 API 的一部分。例如,跟踪和事件激发就是通过此命名空间中的类来完成的。有关更多信息,请参见 ASP.NET 故障排除和调试

System.Management.Instrumentation 命名空间

提供应用程序检测在通过 Windows Management Instrumentation (WMI) 向潜在使用者公开应用程序的管理信息和事件时所必需的类。ASP.NET 运行状况监视功能使用 WMI 来传递事件。严格说来,此命名空间不被视为配置 API 的一部分。

配置类的继承结构

下面的关系图阐释了 System.Web.Configuration 命名空间中的类与 System.Configuration 命名空间中的类之间的继承关系。您可以使用此关系图来了解哪些属性和方法可供当前已实例化的对象使用以及如何获取进一步的信息。

配置类中的继承

配置类的聚合结构

下面的关系图阐释了 System.Web.Configuration 命名空间中的类与 System.Configuration 命名空间中的类之间的聚合关系。您可以使用此关系图来了解被实例化为其他类中的对象的类。

ASP .NET 配置示意图

生成专用的工具

您可能需要允许许多管理员来管理所分配的资源,如特定的网站和应用程序,但同时限制这些管理员可对其他资源执行的操作。您可以开发使用 ASP.NET 配置 API 的管理工具,以便只公开管理员执行其工作所必需的配置设置,同时拒绝对其他设置的访问。这样就避免了直接访问配置文件,从而赋予了管理员一定的权限并有助于保护资源。

面向多台服务器的工具

如果您管理多台服务器,则可能需要在每一台服务器上部署和管理相同的 ASP.NET 应用程序。例如,要管理网络场,可能需要执行下列任务:

  • 编写一个脚本,以便在网络场中的任何服务器或所有服务器上配置同一个 ASP.NET 应用程序。

  • 锁定用于每个应用程序实例的某些文件。

  • 自动执行审核,以便记录所部署应用程序的配置,从而确保以相同的方式配置每一台计算机上的安装。

  • 在配置中编辑一次更改,然后将该更改应用于应用程序的所有实例(无论这些实例安装在哪里)。

另外,ASP.NET 配置 API 还支持跨多台服务器的成批执行。

用一个工具创建和管理配置

作为站点所有者,您可以使用 ASP.NET MMC 管理单元在计算机上创建和管理 ASP.NET 应用程序的配置。ASP.NET MMC 管理单元通过图形用户界面公开 ASP.NET 配置 API 的功能。ASP.NET MMC 管理单元为来自多个配置文件的配置设置(如会话、安全、错误和跟踪)提供统一的视图。您可以更改这些设置,而无需直接在配置文件中编辑 XML。有关更多信息,请参见 ASP.NET 的 MMC 管理单元

请参见

任务

如何:以编程方式访问 ASP.NET 配置设置

如何:从 Web.config 文件读取应用程序设置

如何:从 Web.config 文件读取连接字符串

概念

使用配置类

其他资源

ASP.NET 配置 API