ASP.NET 配置 API 允许你使用统一的编程接口对应用程序的配置数据进行开发、部署、以及管理。你可以使用配置 API 通过编程对所有 ASP.NET 配置进行开发和更改,从而不需要对 XML 配置文件进行直接编辑。另外,你还可以在自定义控制台应用程序或脚本、基于 Web 的管理工具、以及 Microsoft 管理控制台(MMC)的管理单元中使用配置 API。.NET Framework 2.0 中包括下列两个使用配置 API 的配置管理工具:
-
ASP.NET MMC 管理单元。
该工具通过使用配置 API 简化管理任务,从所有配置层次级别中为本地配置提供一个集成视图。
-
网站管理工具
该工具允许你对本地或远程应用程序中的配置设定进行管理,包括被托管网站。
ASP.NET 配置 API 与 Internet 信息服务(IIS)的可编程配置 API 分离。更多信息请参考使用 IIS 可编程管理。
配置 API 能做什么
ASP.NET 配置 API 由用于网站配置和应用程序编程的 ASP.NET 管理对象集合而组成。管理对象被实现成 .NET Framework 类库。配置 API 编程模型有助于加强编译时的数据类型一致性和可靠性。
简化应用程序配置的管理,配置 API 允许你在所有配置层次的合并集中对配置数据进行查看,从而替代分别从不同的配置文件中对分离的配置进行查看的操作。另外,配置 API 还允许你对所有应用程序配置进行操作,而不需要直接编辑 XML 配置文件。最后,配置 API 还简化了管理工具的配置任务,如网站管理工具。
配置 API 简化了配置文件的创建以及跨计算机配置的脚本运行。
配置 API 不支持 IIS 应用程序的创建。有关编写 IIS 管理应用程序的相关信息,请参考 IIS SDK 中的使用 System.DirectoryServices
配置 IIS。
管理本地和远程配置设定
Configuration
对象对由合并的配置设定视图进行展示并且应用于特定的物理实体(如某台计算机),或者某个逻辑实体(如某个应用程序或网站)。特定的逻辑实体可以存在于本地计算机或者远程服务器上。
当特定实体中没有配置文件的时候,Configuration
对象会展示定义在 Machine.config 文件中的默认配置设定。
你可以使用下列类对象中的配置访问方法获取 Configuration
对象:
-
如果你的实体是客户端应用程序,请使用
ConfigurationManager
类。 -
如果你的实体是 Web 应用程序,请使用
WebConfigurationManager
类。
这些方法会返回一个 Configuration
对象,进而为配置文件的处理提供必须的方法和属性。当然,你还可以对这些文件进行读取或写入访问。
-
读取
你可以使用
GetSection
或者GetSectionGroup
方法对配置信息进行读取。读取的用户或进程必须拥有所有配置文件的读取权限。提示:如果你在使用静态方法
GetSection
的时候传递了 path 参数,path 参数必须由运行代码的应用程序进行引用。否则,GetSection
方法会忽略该参数并且返回当前运行的应用程序配置信息。 -
写入
你可以使用
Save
方法对配置信息进行写入。写入的用户或进程必须拥有配置文件和当前配置层次级别的目录的写入权限。
如果需要为特定实体创建配置文件以对被继承的配置设定进行重载,请使用下列任何一种保存配置的方法:
-
Save
方法用于创建新的配置文件。 -
SaveAs
方法用于生成其他位置的配置文件。
提示:要启用对远程计算机的配置设定的访问,请使用 Aspnet_regiis 命令行工具。
代码实例
在 ASP.NET 页面中,你可以使用下例代码获取运行该页面时所需的应用程序配置信息。本例代码使用了静态方法 System.Web.Configuration.WebConfigurationManager.GetSection(System.String)
。
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;
配置类与名字空间
许多配置类和方法彼此都十分相似。下表列出了最常用的配置类和名字空间。
配置类和名字空间 | 描述 |
---|---|
| 包含用于所有 .NET Framework 应用程序的主要配置类。包括 .NET Framework 客户端配置段的段处理器类。段处理器类用于获取配置段的数据,如 ASP.NET 段处理器被包含在 |
| 用于展示计算机、应用程序、Web 目录、或其他资源的配置数据集。 该类包含了一些比较有用的方法,如 该类被用于获取设计时配置数据类型的方法返回对象类型,如 |
| 包含 ASP.NET 配置段的段处理器类。段处理器类用于获取配置段的数据,如 |
| 为获取运行时和设计时配置设定的引用而提供有用的方法。这些方法使用 如果是 Web 应用程序的配置操作,我们推荐使用 |
| 为自定义和扩展配置提供者提供一种操作方式。配置系统中的所有提供者类都由该类派生而来。 |
| 包含对 Web 应用程序进行管理和监视的类和接口。严格地说,该名字空间并不是配置 API 中的考虑部分。例如,追踪和事件触发都是由该名字空间中的类来完成的。 |
| 为应用程序通过 Windows 管理工具(WMI)为潜在用户展示管理信息和事件时而提供的类。ASP.NET 状态监视使用 WMI 对事件进行描述。严格地说,该名字空间也不是配置 API 中的考虑部分。 |
配置类的继承结构
下图说明了 System.Web.Configuration
和 System.Configuration
名字空间中的成员类之间的继承关系。你可以使用这个图表对当前实例对象中的有效属性和方法进行了解,以及如何获取更多信息。
配置类的聚合结构
下图说明了 System.Web.Configuration
和 System.Configuration
名字空间中的成员类之间的聚合关系。你可以使用这个图表对被其他类实例化的配置类对象进行了解。
配置专用工具
你可能需要同时允许多个管理员对被指定资源进行管理,如特定的网站和应用程序,直到这些管理员对其他资源的访问被得到限制。你还可以开发用于 ASP.NET 配置 API 的管理工具对管理员必需的配置设定进行展示,直到其他设定的访问被设定。这使得管理员能够对资源进行保护并且不需要直接访问配置文件。
用于多个服务器的工具
如果你同时管理多个服务器,你可能需要为每台服务器使用相同的 ASP.NET 应用程序进行配置和管理。比如,管理某个 Web 农场可能需要完成下列任务:
-
编写为 ASP.NET 应用程序生成相同配置的脚本,包括 Web 农场中的任何服务器或所有服务器。
-
对用于应用程序每个实例的文件进行锁定。
-
自动化已部署应用程序的配置记录,以确保相同的配置被安装在每台计算机上。
-
对配置进行一次性编辑,然后把这些更改应用到所有应用程序实例中,不管应用程序是否得到安装。
另外,ASP.NET 配置 API 还支持跨服务器的批处理操作。
使用同一个工具对配置进行创建和管理
作为网站所有者,你可以使用 ASP.NET MMC 管理单元对计算机中的 ASP.NET 应用程序进行创建和管理。ASP.NET MMC 配置单元通过一个图形化用户界面暴露 ASP.NET 配置 API 中的功能。ASP.NET MMC 管理单元为来自多个配置文件的配置提供一个统一的视图,如会话,安全,错误,以及追踪。你可以不需要直接对 XML 配置文件进行编辑。