ASP.NET IIS 注册工具 (Aspnet_regiis.exe)
ASP.NET IIS 注册工具 (Aspnet_regiis.exe) 用于用 Internet Information Services (IIS) 注册 ASP.NET 应用程序。 本主题描述使用该工具所需的选项、语法及其他信息。
使用 ASP.NET IIS 注册工具,可以执行以下任务:
注册或删除与 IIS 一同安装的 .NET Framework ASP.NET。
创建新的 ASP.NET 应用程序池。
显示所有已安装的 ASP.NET 版本的状态。
重要
.NET Framework 4 版 包含的 Aspnet_regiis 版具有新的特征和功能,选项一节对此进行了总结。但是,只有当您安装在 Windows Vista、Windows Server 2008 或 Windows 7 上安装了 .NET Framework 4 之后,才可使用这些功能。如果您在任何版本的 Windows XP 或 Windows Server 2003 上安装 .NET Framework 4 版,该工具的工作方式与在 3.5 版和 .Net Framework 的早期版本中相同。有关 Aspnet_regiis 在 Windows XP 或 Windows Server 2003 上如何运行的详细信息,请参见 ASP.NET IIS Registration Tool for the .NET Framework Version 3.5(.NET Framework 版本 3.5 的 ASP.NET IIS 注册工具)。
.NET Framework 4 可以与 .NET Framework 的早期版本并行安装在一台计算机上。 如果在计算机上以前启用了 IIS,则 .NET Framework 安装过程中将通过 IIS 自动注册 ASP.NET 4。 但是,如果您在启用 IIS 之前安装 .NET Framework 4,则您必须运行 ASP.NET IIS 注册工具,以便使用哪个 IIS 注册 .NET Framework,并创建使用 .NET Framework 4 的应用程序池。
警告
有关如何查找 Aspnet_regiis.exe 的正确版本的信息,请参见本文档后面的查找正确的版本的 Aspnet_regiis.exe。
aspnet_regiis [options]
选项
i、ir、iru 和 enable 通常是您使用 IIS 注册 ASP.NET 应用程序所需的所有选项。
选项 |
说明 |
---|---|
-c |
运行 ASP.NET 版本 4 下的应用程序时旧版的选项不适用。 有关在此选项与以前的 ASP.NET 版本一起使用的信息,请参阅 ASP.NET IIS Registration Tool for the .NET Framework Version 3.5(.NET Framework 版本 3.5 的 ASP.NET IIS 注册工具)。 |
-disable |
在 IIS 6.0 以及在经典模式下运行的 IIS 7.0 上,将禁用 ASP.NET ISAPI 扩展。 集成模式下该命令不应用于 IIS 7.0。 此选项只能与 -i、-ir 或 -r 选项结合使用。 此选项不能在 IIS 6.0 之前的 IIS 版本中使用。 |
-e |
从每个 IIS 站点目录的 aspnet_client 子目录中移除 ASP.NET 的客户端脚本。 只移除与 Aspnet_regiis.exe 关联的 ASP.NET 版本的客户端脚本。 |
-ea |
从每个 IIS 站点目录的 aspnet_client 子目录中移除所有 ASP.NET 版本的客户端脚本。 |
-enable |
在 IIS 6.0 和处于经典模式下的 IIS 7.0 上,选项将启用 ASP.NET ISAPI 扩展。 集成模式下该命令不应用于 IIS 7.0。 此选项只能与 -i、-ir 或 -r 选项结合使用。 此选项不能在 IIS 6.0 之前或 ASP.NET 2.0 版之前的版本中使用。 |
-ga user |
向指定用户授予 ASP.NET. 使用的 IIS 元数据库和其他目录的访问权限。 在创建自定义服务帐户时通常使用此选项。 有关更多信息,请参见如何:为 ASP.NET 2.0 应用程序创建服务帐户。 此选项不能在 ASP.NET 2.0 之前的版本中使用。 对于 Windows Vista、Windows Server 2008 或 Windows 7 上的安装,此选项可以为组设置 ACL。
注意
ASP.NET 版本 3.5 及早期版本中提供的 Aspnet_regiis.exe 的版本在指定本地用户或组时失败。
|
-i |
安装 ASP.NET 4 并更新现有应用程序,以使用 ASP.NET 4 版的应用程序池。 它可更新 IIS 元数据库中的 IIS 经典模式和 IIS 集成模式处理程序以及脚本映射。 此选项会创建两个应用程序池:ASP.NET v4.0 和 ASP.NET v4.0 Classic。 DefaultAppPool 应用程序池和 Classic .NET AppPool 应用程序池设置为 .NET Framework 4 版本的 CLR。 Aspnet_regiis.exe 的 32 位版本仅向 Applicationhost.config 文件添加 32 位脚本映射。 Aspnet_regiis.exe 的 64 位版本向 Applicationhost.config 文件添加 32 位和 64 位脚本映射。 执行此操作,是因为启用了 IIS 7.0 的 Windows Vista、Windows Server 2008 或 Windows 7 安装的 64 位版本也将使 Windows 在 Windows 64 位 (WOW64) 支持上可用。
注意
在操作系统的“Windows 功能”对话框中,未选中 ASP.NET 集成选项。(此选项包含在 Internet 信息服务部分中)。“Windows 功能”对话框仅显示 ASP.NET 2.0 集成的状态。它不会显示版本 4 的有关信息。
|
-ir |
安装并注册 ASP.NET 4。 此选项与 -i 选项相同,不同之处在于它不会更改与任何现有应用程序池关联的 CLR 版本。 |
-iru |
如果当前没有通过 IIS 对 ASP.NET 进行注册,则将执行对 -i 进行描述的任务。 如果已通过 IIS 注册 ASP.NET 之前的版本,则此选项将执行对 -ir 进行描述的任务。 |
-k path |
Windows Vista、Windows Server 2008 或 Windows 7 中不支持此选项。 有关在 Windows XP 或 Windows Server 2003 下运行时,此选项的工作方式的信息,请参阅 ASP.NET IIS Registration Tool for the .NET Framework Version 3.5(.NET Framework 版本 3.5 的 ASP.NET IIS 注册工具)。 |
-kn path |
Windows Vista、Windows Server 2008 或 Windows 7 中不支持此选项。 有关在 Windows XP 或 Windows Server 2003 下运行时,此选项的工作方式的信息,请参阅 ASP.NET IIS Registration Tool for the .NET Framework Version 3.5(.NET Framework 版本 3.5 的 ASP.NET IIS 注册工具)。 |
-lk |
列出包含 ASP.NET 脚本映射的所有 IIS 元数据库项的路径和版本。 Windows Vista 及更高版本上不支持此选项。 不显示从父项继承 ASP.NET 脚本映射的项。 |
-lv |
列出计算机上安装的所有 ASP.NET 版本的状态和安装路径。 |
-norestart |
Windows Vista、Windows Server 2008 或 Windows 7 中不支持此选项。 有关在 Windows XP 或 Windows Server 2003 下运行时,此选项的工作方式的信息,请参阅 ASP.NET IIS Registration Tool for the .NET Framework Version 3.5(.NET Framework 版本 3.5 的 ASP.NET IIS 注册工具)。 |
-r |
对 -i 执行所述任务,此外将所有应用程序池切换到使用 .NET Framework 4 CLR。 |
-s path |
为指定的应用程序和所有子应用程序更新脚本映射和应用程序池分配。 对于非根 Web 应用程序(非 W3SVC\ 或 W3SVC\ROOT),非根 Web 应用程序及其所有子应用程序的应用程序池设置将复制到一个名为ASP.NET V4.0 原始应用程序池名称的新应用程序池,然后将非根 Web 应用程序移到新应用程序池。 新应用程序池具有与原始应用程序池相同的设置,不同之处在于该副本被映射到 .NET Framework 4 CLR 并具有 ASP.NET 4 设置。 如果新应用程序池 ASP.NET V4.0 原始应用程序池名称已存在,则将跳过创建和克隆该应用程序池的步骤。 而是,Aspnet_regiis.exe 使用现有应用程序池并将其设置为使用 .NET Framework 4 CLR,但是不做其他任何更改。 然后该工具将指定的应用程序和其子应用程序移动至相应的应用程序池副本。 现有应用程序池设置保留不变。 如果指定的应用程序是 Web 根目录(W3SVC\ 或 W3SVC\ROOT),则 Aspnet_regiis.exe 将更新所有应用程序池。以使用 .Net Framework 4 CLR 和 ASP.NET 4。 |
-sn path |
对 -s 执行所述任务,-sn 不是递归的情况除外。 仅为特定应用程序更新脚本映射和应用程序池分配。 没有子应用程序被更改。 如果指定的应用程序是 Web 根目录(W3SVC\ 或 W3SVC\ROOT),则 Aspnet_regiis.exe 将更改名为 DefaultAppPool、Classic .NET AppPool、ASP.NET V4.0 和 ASP.NET V4.0 Classic 的应用程序池,以使用 .Net Framework 4 CLR 和 ASP.NET 4。 |
-u |
卸载时,保留应用程序池的两个 4 版本和两个版本 4 应用程序池中的任何应用程序。 此选项还会移除映射到 .NET Framework 4 CLR 的应用程序池的 managedRuntimeVersion 特性。 这会将应用程序池还原到运行时的默认值 IIS 7.0,它在 Windows Vista、Windows Server 2008 或 Windows 7 上为 2.0。 该选项移除所有显式设置的版本 4 处理程序和模块映射。 它还会删除脚本所有映射(32 位和 64 位)无论是否使用 Aspnet_regiis.exe 的 32 位或 64 位版本。 |
-ua |
卸载时,保留应用程序池的两个 4 版本和两个版本 4 应用程序池中的任何应用程序。 此选项会从 Applicationhost.config 文件中移除所有 ASP.NET 注册(2.0 版和 4 版)。 它还会删除脚本所有映射(32 位和 64 位)无论是否使用 Aspnet_regiis.exe 的 32 位或 64 位版本。 因为这是 managedRuntimeVersion 特性的默认值,所以现有应用程序池仍将与 .NET Framework 2.0 相关联。 |
-? |
显示 ASP.NET IIS 注册工具的命令语法和选项。 |
配置选项
选项 |
说明 |
---|---|
-config+ |
启用对 ASP.NET 配置的远程访问。 |
-config- |
禁用对 ASP.NET 配置的远程访问。 |
-pa container account |
为指定用户或组 account 授予访问密钥容器的权限。 此选项可以采用下列修饰符:
|
-pc container |
在指定容器中创建 RSA 公钥/私钥对。 此选项可以采用下列修饰符:
|
-pd section |
对配置节进行解密。 此自变量可以采用下列参数:
|
-pdf section webApplicationDirectory |
对指定物理(非虚拟)目录中的 Web.config 文件的指定配置节进行解密。 |
-pe section |
对指定的配置节进行加密。 此选项可以采用下列修饰符:
|
-pef section webApplicationDirectory |
对指定物理(非虚拟)目录中的 Web.config 文件的指定配置节进行加密。 |
-pi container file |
将 RSA 公钥/私钥对从指定的 XML file 导入指定的 container。 此选项可以采用下列修饰符:
|
-pr container account |
移除指定用户或组 account 对指定密钥容器的访问权限。 此选项可以采用下列修饰符:
|
-px container file |
将 RSA 公钥/私钥对从指定的容器导入指定的 XML 文件。 此选项可以采用下列修饰符:
|
-pz container |
删除指定的密钥容器。 此选项可以采用下列修饰符:
|
备注
在一台计算机上安装多个版本的 ASP.NET 时,就说多个版本的 ASP.NET 是并行运行的。 在此方案中,必须配置 IIS 来指示哪个 ASP.NET ISAPI (aspnet_isapi.dll) 版本应该处理 ASP.NET 应用程序中的页。 在 IIS 7.0 中,经典模式和集成模式中应用程序池的 CLR 版本确定了用于运行应用程序的 ASP.NET 版本和关联的 CLR 版本。 在 IIS 6.0 中,用脚本映射来关联应用程序和特定的 ASP.NET ISAPI 版本,该 ISAPI 版本依次确定用于运行该程序的 CLR 版本。
Aspnet_regiis.exe 存在 32 位版本和 64 位版本。 对于 Windows Vista 和 Windows Server 2008,您可以在 64 位 IIS 安装上运行 32 位版本的工具。 这让您可以在同一 64 位系统上运行混合的 32 位和 64 位辅助进程。 下表列出了特殊情况和 64 位版本的 IIS 上运行 32 位版本的工具时的限制。
IIS 版本 |
用于 Aspnet_regiis.exe 的 32 位版本的特殊情况 |
---|---|
6.0 |
可以在遵守下列限制情况下,在 Windows Server 2003 的 64 位 IIS 6.0 安装下运行 32 位版本的 Aspnet_regiis.exe:
|
7.0 |
在 Windows Vista、Windows Server 2008 或 Windows 7 上, 运行 IIS 7 下的 32 位版本 Aspnet_regiis.exe 时该工具不会自动设置 applicationPools 元素的 enable32BitAppOnWin64 特性。 在默认 64 位操作系统安装上,如果启用了 Windows on Windows 64,就可使用 32 位 Aspnet_regiis.exe 配置 IIS 7,但您将无法运行任何 32 位应用程序,除非明确地将 enable32BitAppOnWin64 特性更改为支持在 Windows on Windows 64 中运行应用程序。 有关 IIS 7.0 配置选项的详细信息,请参阅 Applicationhost.config 文件中的 applicationPools 元素文档。 |
ASP.NET IIS 注册工具通常与 -s 或 -sn 选项结合使用,以便将 ASP.NET 应用程序重新映射到与该应用程序关联的 .NET Framework 版本。 使用 -s 选项,可以更新指定根路径及其所有子目录中的应用程序。 如果不需要更新子目录中的应用程序,请使用 -sn 选项。
备注
path 参数引用的是应用程序的根路径,而不是物理路径。例如 W3SVC/1/ROOT/SampleApp1。
还可以使用 ASP.NET IIS 注册工具查看有关 ASP.NET 的信息。 若要列出在计算机上安装的 ASP.NET 的所有版本的状态和安装路径,请使用 -lv 选项。
-norestart 选项可阻止在安装或更新 ASP.NET 脚本映射后重新启动万维网发布服务。 如果在 IIS 中运行位于不同应用程序池中的多个网站,并且如果您不想重启所有这些网站,请使用此选项。
使用 Internet 信息服务控制台应用程序上的 ASP.NET 选项卡进行的任何更改还导致所有应用程序池的回收。 如果您想要更改应用程序使用的 ASP.NET 版本而不会导致回收所有应用程序池,请使用以下两个命令来更改版本。
aspnet_regiis -s w3svc/<instance>/root -norestart
iisapp /a <app pool> /r
ASP.NET IIS 注册工具还可用于安装和卸载关联版本的 ASP.NET。 使用 -i 选项安装 ASP.NET 并更新现有全部 ASP.NET 应用程序的脚本映像。 使用 -ir 选项,可以安装 ASP.NET,但不更新脚本映射。 若要卸载与该工具关联的 ASP.NET 版本,请使用 -u 选项。 如果要从计算机中卸载所有版本的 ASP.NET ,请使用 -ua 选项。
还可以使用 ASP.NET IIS 注册工具查看有关 ASP.NET 的信息。 若要列出在计算机上安装的 ASP.NET 的所有版本的状态和安装路径,请使用 -lv 选项。 如果要查看映射 ASP.NET 的所有 IIS 元数据库项的路径,请使用 -lk 选项。
可以使用 Aspnet_regiis.exe 来安装和删除系统客户端脚本,例如客户端验证脚本。 使用 -c 选项安装与该工具关联的 ASP.NET 版本的客户端脚本。 (脚本安装在每个 IIS 站点目录的 Aspnet 客户端子目录中。)若要删除仅用于与该工具关联的 ASP.NET 版本的客户端脚本,使用 -e 选项。 若要移除已安装的所有 ASP.NET 版本的客户端脚本,请使用 -ea 选项。
在使用模拟时,如果模拟帐户不具有对 IIS 元数据的读访问权限,则当您尝试访问 DirectoryEntry 时将引发 COMException 异常,并显示消息“访问被拒绝”。 当应用程序的 Code 子目录存在于应用程序的根目录中时,可能发生这种情况。 当将应用程序映射到 UNC 共享并且 UNC 帐户不具有对元数据的读访问权限时,也可能发生此错误。 在这两种情况下,对模拟或 UNC 帐户使用“**-ga **用户”选项运行 ASP.NET IIS 注册工具可修复此问题。
有关脚本映射和应用程序根路径的更多信息,请参见位于 Microsoft 网站上的 IIS 文档。
示例
以下命令可安装与您使用的 ASP.NET IIS 注册工具版本关联的 ASP.NET 版本,并更新现有 ASP.NET 应用程序。 在 IIS 6.0 上,该命令更新当前映射到早期 ASP.NET 版本的现有 ASP.NET 应用程序的脚本映射。 在 IIS 7.0 上,该命令更新 IIS 元数据库中的经典模式和集成模式处理程序。 它还可以切换 DefaultAppPool 和 Classic .NET AppPool 应用程序池,以使用 .NET Framework 4 CLR。
aspnet_regiis -i
以下命令可安装与工具关联的 ASP.NET 版本,而不会更新现有应用程序。 在 IIS 7.0 上,该命令未更新与 DefaultAppPool 和 Classic .NET AppPool 应用程序池关联的 .NET Framework 的版本。
aspnet_regiis -ir
下面的命令显示计算机上安装的所有 ASP.NET 版本的状态和安装路径。
aspnet_regiis -lv
下面的命令更新 Web 应用程序及其所有子应用程序,以使用与工具关联的 ASP.NET 版本。 在 IIS 6.0 上,更新了脚本映射。 在 IIS 7.0 上,应用程序映射到新的应用程序池。
aspnet_regiis -s W3SVC/1/ROOT/SampleApp1
下面的命令执行与 -s 命令相同的功能,不同之处在于它不会影响子目录中的应用程序。
aspnet_regiis -sn W3SVC/1/ROOT/SampleApp1
以下命令向指定用户或组帐户授予 ASP.NET. 使用的 IIS 元数据库和其他目录的访问权限。
aspnet_regiis -ga MyUserGroup W3SVC/1/ROOT/SampleApp1
查找正确的版本的 Aspnet_regiis.exe
Aspnet_regiis.exe 安装在 Microsoft.NET Framework 目录中。 如果计算机并行运行多个 .NET Framework 版本,则可安装多个工具版本。 下表列出了该工具在不同版本的 .NET Framework 中的安装位置。
.NET Framework 的版本 |
Aspnet_regiis.exe 文件的位置 |
---|---|
.NET Framework 版本 1 |
%windir%\.NET\Framework\v1.0.3705 |
.NET Framework 版本 1.1 |
%windir%\Microsoft.NET\Framework\v1.1.4322 |
.NET Framework 版本 2.0、版本 3.0 或版本 3.5(32 位系统)。 |
%windir%\Microsoft.NET\Framework\v2.0.50727 |
.NET Framework 版本 2.0、版本 3.0 和版本 3.5(64 位系统)。 |
%windir%\Microsoft.NET\Framework64\v2.0.50727 |
.NET Framework 版本 4(32 位系统) |
%windir%\Microsoft.NET\Framework\v4.0.30319 |
.NET Framework 版本 4(64 位系统) |
%windir%\Microsoft.NET\Framework64\v4.0.30319 |
.NET Framework 版本 3.0 和 3.5 的目录不具有该工具的副本。 有关更多信息,请参见 Scott Hanselman 的博客上的文章:如何设置 IIS 应用程序或 AppPool 使用 ASP.NET 3.5 而非 2.0。