65.9K
CodeProject 正在变化。 阅读更多。
Home

在 IIS 7.0 上部署 ASP.NET 网站

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.76/5 (139投票s)

2008年8月20日

CPOL

9分钟阅读

viewsIcon

1191027

本文介绍 IIS 7.0 的一些功能和架构,以及在 IIS 上部署 ASP.NET 网站。

IIS7.JPG

引言

  1. IIS 7.0 简介
  2. IIS 7.0 的功能
  3. IIS 7.0 的基本架构
  4. 如何在 IIS 7.0 上部署 ASP.NET 网站
  5. 如何创建应用程序池
  6. 将应用程序池分配给您的应用程序
  7. 配置 IIS 7.0 上的 Web 场
  8. IIS 6.0 与 IIS 7.0 对比
  9. 在哪里可以获取 IIS 7.0?
  10. 参考文献
  11. 历史

IIS 7.0 简介

Microsoft Internet Information Services (IIS) 7.0 在 Windows Server 2008 和 Windows Vista 中提供了一个安全、可管理的平台,用于开发、管理和托管 Web 应用程序和服务。它经过了彻底的重新设计和重构。IIS 7.0 提供了各项功能,使管理员能够有效管理 Web 基础结构;开发人员能够快速构建 Web 应用程序和服务;托管服务提供商能够进行 Web 托管。

IIS7_new.JPG

IIS 7.0 的功能

以下是 IIS 7.0 的一些功能

  • IIS 7.0 提供了各项功能,使管理员能够可靠有效地管理 Web 基础结构。
  • IIS 7.0 具有分布式基于文件的配置系统,允许将 IIS 设置与 ASP.NET 设置一起存储在 web.config 文件中。
  • IIS 7.0 提供了一个具有成本效益、更具扩展性的 Web 服务器平台,可为广大客户提供可靠的 Web 托管。

IIS 7.0 的主要创新

  • 模块化、可扩展的核心 Web 服务器
  • 统一的、分布式的基于文件的配置系统
  • 集成的运行状况监视和诊断
  • 一套支持委派的新管理工具

有关更多功能和产品信息,请在此处查看

IIS 7.0 的基本架构

下图显示了 IIS 7.0 的整体架构,其中包含 HTTP.SysSvcHost.exe、应用程序池和工作进程 (W3Wp)。

II7_Archi.JPG

IIS 7.0 的主要组件是 **HTTP.Sys**、**Svchost.Exe**、**应用程序池**、**工作进程 (W3WP.exe)** 和 **配置存储**。

HTTP.Sys:这是内核模式协议栈,负责监听 HTTP 和 HTTPS 请求。W3SVC 和 WAS 是 Svchost.exe 的一部分。W3SVC 是从内核模式(由 HTTP.Sys 传递)接收请求的监听器。W3SVC 还与 Windows Activation Process(由工作进程管理,负责启动、停止和回收应用程序池)进行交互。它还负责应用程序池在运行时期间的运行状况监视。配置存储以 XML 分层形式存储所有 web.config 和 ASP.NET 设置以及其他配置。W3wp.exe 是一个长时间运行的进程,负责处理请求并生成响应。

下图展示了 IIS 7.0 的流程。这是用户请求到达 IIS 并从 IIS 获取响应的流程。

ProceessFlowofIIS.JPG

用户请求通过 Http.Sys 从内核模式传递到用户模式,然后传递给 svchost,最后传递到应用程序池。

更多详情,请点击此处

如何在 IIS 7.0 上部署 ASP.NET 网站

接下来,我将通过一个示例来介绍如何在 IIS 7.0 上部署您的 ASP.NET 网站。

步骤 1:在 Visual Studio 中发布您的 Web 应用程序。

步骤 2:将已发布的应用程序文件夹复制到C:\intepub\wwwroot[默认] 文件夹。

步骤 3:从“运行” -> 输入“inetmgr” -> 单击“确定”

将出现下图所示的界面。这是任何应用程序的主页面。有三个面板。

Main_DefaultIIS.JPG

“TestWeb” 是最近粘贴到您的 wwwroot 文件夹中的 Web 应用程序。

步骤 4:我们需要将其转换为应用程序,只需右键单击,然后单击“转换为应用程序”,如下图所示。

ConvertToApplication.JPG

将其转换为应用程序后,其图标将发生变化,然后您可以从中间面板设置 Web 应用程序的属性。您可以像 IIS 6.0 一样设置 IIS 身份验证模式、默认页面。

ConvertedToApplication.JPG

您可以在“身份验证”部分更改安全设置。默认设置将从您的 web.config 中获取。例如,在我的 web.config 中,窗体身份验证已设置为启用。如果我们要更改状态,只需双击并更新状态,从启用变为禁用或反之。

AuthenticatinSettings.JPG

现在,最重要的一步是为您的应用程序设置应用程序池。

如何创建应用程序池

一个站点可以包含多个应用程序,包括该站点的默认应用程序,称为根应用程序。除了属于站点之外,应用程序还属于一个应用程序池,该应用程序池将应用程序与服务器上其他应用程序池中的应用程序隔离开。

步骤 1:右键单击应用程序池,然后输入您的池的名称。这里,我输入了“pool”,选择 .NET Framework,然后单击“确定”。

PoolCreation.JPG

步骤 2:如果您在服务器上写入某些内容(可能写入错误事件日志),则需要将池标识更改为 Local System。右键单击池标识设置,如下图所示。

应用程序池有三种标识:

  • 网络服务
  • 本地服务
  • 本地系统
changePoolIdentity.JPG

将应用程序池分配给您的应用程序

现在,我们需要将应用程序池分配给我们的 Web 应用程序。

步骤 1:右键单击“TestWeb”应用程序,然后选择“高级设置”

asingAppPool.JPG

步骤 2:最后,将您创建的应用程序池“pool”分配给“TestWeb”应用程序。

FinalAppPoolAsign.JPG

现在,您可以通过键入 http:\\localhost\testweb 来运行您的应用程序,并且可以通过 IP 在网络上访问。

配置 IIS 7.0 中的 Web 场

我将此部分分为几个部分。它们是:

什么是应用程序池?

应用程序池用于分离一组共享相同配置的 IIS 工作进程。应用程序池使我们能够隔离 Web 应用程序,以提高安全性、可靠性和可用性。工作进程充当分隔每个应用程序池的进程边界,因此当一个工作进程或应用程序出现问题时,其他应用程序或工作进程不会受到影响。

aPPpIOOL.JPG

图:IIS 服务器上的应用程序池与工作进程

在您的 IIS 中,可能托管了许多 Web 站点,通过创建应用程序池,您可以为您的应用程序分配一个单独的工作进程。我已经讨论了如何将应用程序池分配给您的 Web 应用程序。

应用程序池的类型

IIS 7.0 中有两个预定义的应用程序池。

  1. DefaultAppPool (集成模式)
  2. ClassicAppPool

IIS 7.0 安装时默认不安装任何应用程序池。当系统中安装了 ASP.NET 2.0 时,会安装 Classic 应用程序池。

应用程序池的标识

应用程序池标识的配置是 IIS 7.0 安全性的一个重要方面,因为它决定了工作进程访问资源时的标识。此设置继承自 IIS 6.0。在 IIS 5.0 中,应用程序池在本地系统帐户下运行。在 IIS 7.0 中,有三个预定义的标识,与 IIS 6.0 相同。

应用程序池标识 描述
本地系统 LocalSystem 是一个内置帐户,在服务器上拥有管理权限。它可以访问本地和远程资源
本地服务 LocalServices 内置帐户拥有已验证的本地用户帐户的权限。它没有任何网络访问权限。
网络服务 这是应用程序池的默认标识。NetworkServices 拥有已验证的本地用户帐户的权限,并且可以作为计算机帐户访问远程资源。

如何创建应用程序池并将其分配给 Web 应用程序?

这已经讨论过了。

创建应用程序池并将其分配给 Web 应用程序

什么是 Web 场?

默认情况下,每个应用程序池都运行一个工作进程 (W3Wp.exe)。我们可以为一个应用程序池分配多个工作进程。具有多个工作进程的应用程序池称为“Web 场”。同一个应用程序池的多个工作进程有时可以提供更好的吞吐量和应用程序响应时间。每个工作进程都应拥有自己的线程和自己的内存空间。

WEb_Garden.JPG

图:Web 场的通用框图。

如图所示,IIS 服务器可能有多个应用程序池,每个应用程序池至少有一个工作进程。Web 场应包含多个工作进程。

使用 Web 场可能会有一些限制。如果我们使用“in proc”会话模式,我们的应用程序将无法正常工作,因为会话将由不同的工作进程处理。为避免此类问题,我们应使用“out proc”会话模式,并可以使用“Session State Server”或“SQL-Server Session State”。

主要优点:Web 场中的工作进程共享到达该特定应用程序池的请求。如果一个工作进程发生故障,另一个工作进程可以继续处理请求。

如何创建 Web 场?

创建一个新的应用程序池。右键单击 -> 高级设置 -> 转到“进程模型”部分,为“最大工作进程数”设置值。

IIS_Update.JPG

是否推荐使用 Web 场?

并不总是推荐为您的应用程序使用 Web 场。它会影响您站点的性能,除非在非常特殊的情况下,例如某些长时间运行的同步请求或应用程序非常不稳定。

IIS 6.0 与 IIS 7.0 对比

IIS 7.0 的主要优势在于其模块化设计,这使得 IIS 7.0 相较于 IIS 6.0 具有一些优势。下表显示了 IIS 6.0 和 IIS 7.0 的一些区别。

特点

IIS 6.0

IIS 7.0

架构 整体式 模块化
安装 安装了大部分功能 基于角色的最小化安装
扩展功能 ISAPI 过滤器和 ISAPI 扩展 以托管或原生代码添加了模块和处理程序
自定义 UI 正常 为 .NET 定制

还有更多区别。

在哪里可以获取 IIS 7.0?

IIS 7.0 并非在所有操作系统上都可用。IIS 7.0 有特定的操作系统和特定版本。

带版本的操作系统 可用
Windows Server 2008
Windows Vista (家庭基础版) 否 (默认) 需要安装
Windows Vista (家庭高级版) 否 (默认) 需要安装
Windows Vista (企业版)
Windows Vista (旗舰版)

参考

历史

  • 08/20/2008:
    • 文章发布
  • 08/28/2008:
    • 新增部分:IIS 7.0 上的 Web 场
    • 修改了一些文本
© . All rights reserved.