作者:Tobin Titus
IIS 7 和 IIS 8 允许旧版配置脚本和应用程序继续运行。 有一个可选的安装组件,它支持元数据库系统及其编程接口:管理基对象 (ABO),以及其顶部的 ADSI 和 WMI 提供程序。 系统截获对 ABO 的调用,并将其映射到新的配置系统。 数据保留在 applicationHost.config 中,但会向 ABO 调用方提供配置结构的旧视图。
先决条件
- 通过从 IE 中选择
http://LocalHost
,确保 IIS 已安装在计算机上,并看到你获得默认的“正在构建中”页。 如果未安装 IIS,请参阅“安装操作说明”以获取安装说明。 - 确保你在计算机上拥有管理权限:默认情况下,如果你以内置管理员帐户以外的用户身份登录,即使此用户已添加到计算机上的本地管理员组(这是带有 IIS 的 Windows Server® 2008 及更高版本中的一个新安全功能,称为 LUA,它超出了 IIS 的范畴),你不会获得管理权限。 请确保使用“runas”命令行工具以内置管理员帐户身份登录,或根据需要以内置管理员身份显式调用应用程序。 例如,若要启动 notepad.exe,请运行此命令:“runas /user:administrator notepad.exe”。 系统会提示输入管理员帐户的密码。 通过运行“runas /user:administrator cmd.exe”,拥有已提升的 cmd-box shell 非常有用。 从该 cmd-box 运行的每个应用程序也将提升,并且不需要使用该 cmd-box 中的“runas”语法。
- 确保备份主配置文件。 只需将 applicationHost.config 复制到其他文件,以便稍后可以还原它。 你将在 inetsrv\ 目录下找到 applicationHost.config,后者又位于系统目录下。 请注意,你需要是管理员才能执行此操作,请参阅上面的前一点。
- 在开始之前,请确保自己处于“干净状态”。 为此,请还原之前练习中对 applicationHost.config 文件所做的更改。 (如果使用 VPC 映像,执行该操作最简单的方法是重启映像而不保存其状态)。
- 此外,建议在 IE(“工具”>“选项”>“高级”)中关闭友好的 HTTP 错误消息,以便更快地进行故障排除。
注意
从 .html 文件复制文本时,还可以复制隐藏的字符。 将文本粘贴到编辑器(如 Visual Studio)或命令框窗口中时,文本可能显示为已正确复制,但粘贴的文本可能无法正常工作,因为它包含隐藏的字符。 这种情况可能难以调试。
从 .MHT 文件中复制文本的最佳方法是复制文本,然后将其粘贴到记事本中,然后从记事本中再次复制。 这会删除任何隐藏的字符。 如果文本较短,有时自行键入文本会更容易,而不是复制粘贴它。
使用 ABO 编写全局设置
在此步骤中,你将了解如何使用 AdminBaseObjects 接口更改全局设置上的值,并将其写入 applicationHost.config 文件。 你将使用 MBExplorer.exe 工具来执行此任务。
首先,验证计算机上是否安装了 IIS 的“元数据库兼容性”组件。 默认情况下不会安装此组件。 在 Windows Server® 2008 及更高版本上,可以使用服务器管理器工具(“开始”->“管理工具”->“服务器管理器”)并检查“IIS 6.0 管理兼容性”组件进行安装。 在 cmd-box 中,通过运行“net start iisadmin”验证 NT 服务 IISADMIN 是否已启动并且正在运行。 应收到一条消息,指示 IISADMIN 已在运行。
接下来,需要从 Web 下载 MBExplorer 工具。 使用 MSN 搜索查找它,它会将你定向到 Microsoft.com 上的下载中心,在这里,你将需要下载并安装 IIS 6.0 资源工具包。 MBExplorer 工具包含在该资源工具包中。 安装后,通常会在 \Program Files\IIS Resources\Metabase Explorer\MBExplorer.exe 下找到它。
运行 MBExplorer.exe。 此工具在 AdminBaseObjects (ABO) 接口的基础上工作,因此它呈现配置层次结构的 ABO 视图。
在左窗格中,导航到 LM > W3SVC 级别。 这是 ABO 视图中配置层次结构的全局级别。
找到 AuthFlags 属性。
提示
如果通过单击“名称”列标题对属性进行排序,则可以更容易地找到该属性。 默认值是 1秒。
将值更改为介于 1 和 7 之间(包含 1 和 7)的整数。
使用文本编辑器(如记事本)在以下位置打开 ApplicationHost.config 文件:
%windir%\system32\inetsrv\config\ApplicationHost.config
找到 <authentication> 分区组。 <authentication> 部分根据设置的值启用。 例如,如果设置 AuthFlags=2,则只有 BasicAuthentication 将具有 enabled="true",而其他 authentication 部分将具有 enabled="false"。 这是因为“2”对应于 IIS 6.0 架构中的“AUTH_BASIC”。
请更改 MBExplorer 中的值并刷新 ApplicationHost.config 文件的视图。 通过更改元数据库中的 AuthFlags 属性,可以在 ApplicationHost.config 文件中间接启用和禁用身份验证方案。
使用 ABO 编写虚拟目录设置
在此步骤中,你将了解如何使用 ABO 更改虚拟目录下的值,并将该值写入 applicationHost.config。由于未更改全局设置,ABO 兼容性层会在 applicationHost.config 文件中生成位置标记,其路径对应于所更改的虚拟目录。 请注意,“元数据库兼容性”组件不会处理 web.config 文件。
- 运行 MBExplorer.exe 工具。
- 在左窗格中,导航到“LM”>“W3SVC”>“1”>“ROOT”级别。 这是默认网站下的根应用程序。
- 设置 AuthFlags 属性的值。 在左窗格中单击“ROOT”,从“编辑”菜单中选择“新建 DWORD 记录”,然后输入 6000 作为记录 ID。
- 这会在此级别创建 AuthFlags 属性,其值为 0。 双击右窗格中的属性,将值更改为介于 1 和 7 之间的整数(包含 1 和 7)。
- 使用文本编辑器(如记事本)在以下位置打开 ApplicationHost.config 文件:
%windir%\system32\inetsrv\config\ApplicationHost.config
- 在文件底部,记下新的 <location path="Default Web Site":> 标记,并根据设置的值启用或禁用 authentication 部分。
总结
本文档介绍了如何启用和使用配置系统的兼容性功能。 你使用了一个旧工具来更改全局和虚拟目录级别的设置,并将它们写入 applicationHost.config。你可能想要使用其他工具(如 adsutil.vbs)来执行映射和写入。 你可能想要验证现有的 ABO/ADSI/WMI 脚本和应用程序是否继续在此环境中工作。 也可以反向尝试:更改 applicationHost.config 中的值,并验证它们是否反映在 MBExplorer 或者任何其他工具或脚本的 ABO 视图中。