在 IIS 6.0 发布以后,Administrators 组中的成员可以在 IIS 正在运行时直接编辑配置数据库文件,所做更改立即应用到内存中的配置数据库。因为 MetaBase.xml 是文本文件,所以可以实现该功能(称作“运行时编辑”)。如果启用了运行时编辑功能,则可以使用常见的文本工具(如 Microsoft 的记事本)来完成直接编辑。
运行时编辑功能取决于配置数据库历史功能,该功能跟踪管理员对 MetaBase.xml 文件进行的更改。配置数据库历史功能在默认情况下被启用。
在默认情况下不启用运行时编辑。有关启用运行时编辑功能的信息,请参阅启用运行时编辑功能。要点 您必须是本地计算机上 Administrators 组的成员或者必须被委派了相应的权限,才能执行下列步骤。作为安全性的最佳操作,请使用不属于 Administrators 组的帐户登录计算机,然后使用运行方式命令以管理员身份执行该步骤。
IIS 使用 Windows 的文件更改通知来确定保存 MetaBase.xml 文件的时间。当 IIS 检测到配置数据库文件已经保存,则进行下图所示的一系列检查。基于下图中显示的各步骤的结果,提供了几个可能的方案,以演示运行时编辑功能的行为。
要点 不能通过使用运行时编辑功能直接编辑 MBSchema.xml 文件。必须以编程方式更改配置数据库架构。
第 1 步:IIS 接收到 MetaBase.xml 已保存的文件更改通知。
当保存配置数据库文件时,IIS 从 Windows 接收一个文件更改通知。如果 MetaBase.xml 被写入锁定,则当管理员试图用“记事本”之类的应用程序直接保存 MetaBase.xml 时,会产生一个错误,且不出现文件更改通知。
第 2 步:IIS 在 MetaBase.xml 中搜索
IIS 读取 MetaBase.xml 文件中
第 3 步:IIS 在历史文件夹中查找相应的历史文件。
相应的历史文件是指用最高次要版本号命名的文件,它的
第 4 步:分析 MetaBase.xml。
IIS 对 MetaBase.xml 文件进行分析以确定是否存在致命的可扩展标记语言 (XML) 错误(如 XML 结束标记丢失)。如果 MetaBase.xml 的分析成功,IIS 继续执行第 5 步。
第 5 步:将 MetaBase.xml 与相应的历史文件进行比较。
IIS 将 MetaBase.xml 文件与历史文件夹中具有相同主要版本的相应历史文件进行比较。IIS 确定这两个文件之间的区别:
第 6 步:检查在 MetaBase.xml 中更改的层次是否存在于内存中的配置数据库中。
IIS 判断在 MetaBase.xml 文件中对其进行更改的层次/节点是否存在于内存中的配置数据库中。如果该层次/项存在于内存中的配置数据库中,则 IIS 继续执行第 7 步。
第 7 步:通过管理基本对象 (ABO) 将更改写入到内存中的配置数据库中。
所做的更改通过 ABO 写入到内存中的配置数据库中。
在 MetaBase.xml 中进行的更改可能会因以下原因不发送到内存中的配置数据库中:
如果因上面列出的任一原因而未将所做更改写入到内存中的配置数据库中,则会向事件日志发送一个错误或警告。有关同时更新的详细信息,请参阅下面的同时更新。
第 8 步:IIS 创建一个包含相应历史文件的内容以及在内存中的配置数据库中写入的更改的新历史文件。
历史文件在历史文件夹中创建。新文件包括相应历史文件的内容组合以及在第 7 步中写入内存中的配置数据库中的更改。新历史文件由在 MetaBase.xml 文件中找到的主要版本号(在第 2 步中确定的
IIS 支持在编程接口(如 ADSI 和 WMI)之间同时更新。但是,在某些情况下,可能会出现上面的第 8 步中描述的错误。规则是更新结果总是由最后一次写入操作决定。
IIS 还支持由多个编程接口和一个直接编辑 MetaBase.xml 文件的管理员同时进行更新。但是,如果同时写入到同一个配置数据库节点或属性,则可能导致错误。
可通过更改配置数据库文件的访问控制列表 (ACL) 或通过让计算机只有一个管理员来防止发生错误。在默认情况下,只有 Administrators 组和 LocalSystem 帐户的成员才能够访问配置数据库文件。IIS 在内部使用 System 帐户来更改配置数据库文件,以便必须保留访问控制项 (ACE)。有关 ACL 的详细信息,请参阅访问控制。
相关主题