在没有管理权限的情况下运行 IIS Express
作者:Vaidy Gopalakrishnan
IIS Express 设计用于在没有管理权限的情况下执行最常见的 Web 开发和测试任务。 这在开发人员对其计算机没有管理权限时非常有用。 即使对于管理用户,此功能也可以避免 Windows Vista 和 Windows 7 中的用户帐户控制 (UAC) 弹出窗口中断工作流程。
本文介绍标准用户可以使用 IIS Express 执行哪些操作,并介绍只有管理员可以执行的任务。
在本地运行网站
借助 IIS Express,标准用户可以使用非保留端口(端口大于 1024)在本地运行网站。 IIS Express 绑定的默认网站是 http://localhost:8080
。 默认情况下,WebMatrix 和 Visual Studio 2010 SP1 Beta 还会将网站配置为使用 localhost 和非保留端口。
相比之下,需要管理权限才能为外部请求提供内容或使用保留端口(例如 80 或 443)。
配置网站和应用程序
IIS 和 IIS Express 都使用包含服务器范围的配置信息的 applicationhost.config 文件。 使用 IIS Express,每个用户都拥有自己的 applicationhost.config 副本,这意味着用户无需特殊权限即可添加网站、删除网站、配置虚拟目录等。 IIS Express 在用户的“文档”文件夹(例如,Windows 7 上的 %userprofile%\Documents\IISExpress\config)中查找 applicationhost.config 文件。 还可以使用 /config 命令行开关将 IIS Express 指向自定义 applicationhost.config 文件。 结果是,无需成为管理员即可将 IIS Express 与 Visual Studio 配合使用。
由于 IIS 使用标准用户无法写入的计算机范围的 applicationhost.config 文件,因此 IIS 下的相同任务只能由管理员执行。 (由于 IIS 通常在服务器计算机上使用,因此从个人开发人员的角度来看,这通常不是限制。)
启动和停止网站
使用 IIS Express,标准用户可以随时启动和停止其 Web 服务器。 可以使用 WebMatrix 和 Visual Studio 2010 SP1 Beta 或使用 iisexpress.exe 命令可执行文件来完成此操作。 用户还可以通过 Windows 系统托盘应用程序浏览和关闭 IIS Express 实例。
使用 IIS 时,用户无法直接启动其网站。 而是由工作进程激活服务 (WAS) 负责激活网站。 由于 WAS 是系统服务,因此只有管理员可以启动或停止。
使用 SSL
通过安全套接字层 (SSL) 配置访问权限需要 IIS Express 的管理权限,就像对 IIS 一样。 但是,IIS Express 安装程序执行以下任务,使标准用户能够将 SSL 与 IIS Express 配合使用:
- 它会自动在本地计算机存储中创建并安装自签名 SSL 服务器证书。
- 它配置 HTTP.SYS 为 SSL 保留端口 44300 到 44399。 使用 localhost 和指定范围内的某个端口的传入 SSL 请求会自动与自签名证书关联。
(HTTP.SYS 是一个操作系统组件,用于处理 IIS 和 IIS Express 的 SSL。安装程序能够配置 HTTP.SYS,因为安装程序以提升的权限运行。)
因此,使用 SSL 通过 IIS Express 测试网站非常简单,只需将如下所示的绑定添加到 applicationhost.config 中的网站元素即可:
<binding protocol="https" bindingInformation="*:44300:localhost" />
这仅适用于本地流量(localhost 请求)和指定的端口范围。 若要配置自定义 SSL 证书或使用指定范围之外的端口运行 SSL,需要管理员权限。
总结
IIS Express 使非管理用户能够执行以下任务:
- 在本地运行网站并使用大于 1024 的端口号。
- 添加、删除和修改网站、应用程序和虚拟目录。
- 启动和停止 Web 服务器。
- 添加 SSL 支持,以使用预安装的自签名 SSL 证书和 44300 到 44399 之间的端口测试网站。
若要执行以下任务,需要管理权限:
- 使用保留端口,例如 80 或 443。
- 为外部流量请求提供服务。
- 配置自定义 SSL 证书。
- 使用 44300 到 44399 范围之外的端口运行 SSL。