|
ASP.NET 提供了 IHttpHandler 和 IHttpModule 接口,它可使您使用与在 IIS 中所用的 Internet 服务器 API (ISAPI) 编程接口同样强大的 API,而且具有更简单的编程模型。HTTP 处理程序对象与 IIS ISAPI 扩展的功能相似,而 HTTP 模块对象与 IIS ISAPI 筛选器的功能相似。
ASP.NET 将 HTTP 请求映射到 HTTP 处理程序上。每个 HTTP 处理程序都会启用应用程序内单个的 HTTP URL 处理或 URL 扩展组处理。HTTP 处理程序具有和 ISAPI 扩展相同的功能,同时具有更简单的编程模型。
HTTP 模块是处理事件的程序集。ASP.NET 包括应用程序可使用的一组 HTTP 模块。例如,ASP.NET 提供的 SessionStateModule 向应用程序提供会话状态服务。也可以创建自定义的 HTTP 模块以响应 ASP.NET 事件或用户事件。
编译、部署和注册 HTTP 处理程序
为位于应用程序的虚拟根下 \Bin 目录中的 HTTP 处理程序编译和部署 .NET 类。详细信息,请参阅部署本地应用程序组件。
在应用程序的 Web.config 配置文件中注册同步或异步 HTTP 处理程序。下例将所有的 HTTP 请求映射到程序集 MyHandler.New(位于 MyHandler.Fin 文件)中的 MyHandler 类和 Myhandler.dll 类上。
<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="MyHandler.New"
type="MyHandler.New, MyHandlerAssembly" />
<add verb="*" path="*.myNewFileExtension"
type="MyHandler.Fin, MyHandlerAssembly" />
</httpHandlers>
<system.web>
</configuration>
<httpHandlers> 配置节中的 <add> 元素有三种属性:path、type 和 verb。详细信息,请参阅 <httpHandlers> 的 <add> 元素。
将 HTTP 处理程序扩展注册为 IIS 中的脚本映射。详细信息,请参阅设置应用程序映射。
编译、注册和部署 HTTP 模块
为位于应用程序的虚拟根下 \Bin 目录中的 HTTP 模块编译和部署 .NET 类。详细信息,请参阅“部署本地应用程序组件”。
在应用程序的 Web.config 配置文件中注册 HTTP 模块。下例向应用程序注册了 OutputCache 模块。
<configuration>
<system.web>
<httpModules>
<add name="OutputCache"
type="System.Web.Caching.OutputCacheModule, System.Web,
Version=1.0.2800.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"/>
</httpModules>
<system.web>
</configuration>
详细信息,请参阅 <httpModules> 的 <add> 元素。
有关操作和注册 HTTP 处理程序和 HTTP 模块的详细信息,请参阅 MSDN Library 中有关 HTTP 处理程序或 HTTP 模块的信息。
ASP.NET 并行支持概述
.NET Framework 允许在同一台计算机上安装多个版本的运行库。在默认情况下,当在已经装有 .NET Framework 的计算机上安装 .NET Framework 时,所有的 ASP.NET 应用程序都会自动更新为使用该版本的 .NET Framework。唯一的例外是绑定到非兼容版本的运行库或更新版本的运行库的应用程序。虽然较新版本的 .NET Framework 设计是向后兼容的,您可能还希望配置 ASP.NET 应用程序以使用早期版本的 .NET Framework。
ASP.NET 应用程序的脚本映射
当 .NET Framework 的多个版本安装在同一台计算机上时,每个安装都含有一个 ASP.NET ISAPI 的相关版本。ASP.NET 应用程序使用 ASP.NET ISAPI 来确定将哪个版本的 .NET Framework 用于该应用程序。可以配置 ASP.NET 应用程序来使用任何已安装的 ASP.NET ISAPI 版本。要指定用于 ASP.NET 应用程序的 ASP.NET ISAPI 版本,需要在 Internet 信息服务 (IIS) 中为应用程序注册脚本映射。
脚本映射将文件扩展名和 HTTP 动作与进行脚本处理的适当的 ISAPI 相关联。例如,当 IIS 接收到 .aspx 文件请求时,该应用程序的脚本映射会指示 IIS 将所请求的文件转发给适当版本的 ASP.NET ISAPI 来处理。每个 ASP.NET 应用程序的脚本映射通常在 Internet 信息服务管理控制台上设置,并且可以直接应用于应用程序或是从父应用程序中继承。在默认情况下,在安装 .NET Framework 后,计算机上所有现有 ASP.NET 应用程序的脚本映射将自动更新到使用与安装相关的 ASP.NET ISAPI 版本,除非该应用程序使用了更新的或不兼容的版本。
为了更便于为 ASP.NET 应用程序重新配置脚本映射,每个 .NET Framework 安装程序都附带相关版本的 ASP.NET IIS 注册工具 (Aspnet_regiis.exe)。在默认情况下,该工具安装在以下目录中:
systemroot\Microsoft.NET\Framework\versionNumber
管理员可以使用该工具将 ASP.NET 应用程序重新映射到与该工具相关的 ASP.NET ISAPI 版本。
注意 因为 Aspnet_regiis.exe 与特定 .NET Framework 版本相关,管理员必须使用适当的 Aspnet_regiis.exe 版本重新配置 ASP.NET 应用程序的脚本映射。Aspnet_regiis.exe 只会将 ASP.NET 应用程序的脚本映射重新配置到与该工具相关的 ASP.NET ISAPI 版本。
该工具还可用于显示所有已安装版本的 ASP.NET 的状态、注册相关版本的 ASP.NET、创建客户端脚本目录和执行其他配置操作。
有关脚本映射和 IIS 配置的详细信息,请参阅 IIS 帮助。有关更新 ASP.NET 应用程序的脚本映射的详细信息,请参阅 ASP.NET IIS 注册工具 (Aspnet_regiis.exe)。
ASP.NET 性能计数器
性能计数器可使您在性能控制台上监视 ASP.NET 的运行。每个 ASP.NET 安装程序都会安装既应用于每个单独的 ASP.NET 版本又应用于所有已安装版本的性能计数器。
每个 ASP.NET 版本都会安装单独的一套性能计数器对象以监视 ASP.NET 系统和 ASP.NET 应用程序。这些对象分别使用“ASP.NET v.X.X.XXXX.X”和“ASP.NET Apps v.X.X.XXXX.X”命名约定,其中 v.X.X.XXXX.X 代表 ASP.NET 的版本和内部版本号。
另外,ASP.NET 也安装了应用于所有已安装的 ASP.NET 版本的 ASP.NET 系统和 ASP.NET Application 性能计数器,因为这些计数器在所有的 ASP.NET 版本之间共享,则它们总是对应于机器上最新安装的版本。如果卸载了最新版本的 ASP.NET,则这些计数器会自动与剩余的最新版本的 ASP.NET 重新相关。
ASP.NET 状态服务
ASP.NET 状态服务用于管理计算机上的会话状态。安装在同一台计算机上的所有兼容版本的 ASP.NET 都共享相同的状态服务。所使用的状态服务版本也总是随最新版本的 ASP.NET 安装的状态服务。该版本注册在 aspnet_state 下。因此,当卸载了该版本的 ASP.NET 时,则会注册计算机上剩余的最新版本并立即使用。
ASP.NET SQL 状态服务器
ASP.NET SQL 状态服务器用于管理计算机上 SQL 中的会话状态。安装在同一台计算机上的所有兼容版本的 ASP.NET 都共享相同的 SQL 状态服务器。所使用的 SQL 状态服务器版本也总是随最新版本的 ASP.NET 安装的状态服务器,当卸载了该版本的 ASP.NET 时,则会注册计算机上剩余的最新版本并立即使用。
ASPNET 用户帐户和筛选器
所有已安装的 ASP.NET 版本都共享相同的 ASPNET 用户帐户(用于工作进程)和 Aspnet_filter.dll(用于从无 Cookie 的会话状态请求中存储和删除对话 ID)。ASPNET 用户帐户和 Aspnet_filter.dll 总是对应于最新已安装的 ASP.NET 版本。当该版本的 ASP.NET 从计算机上卸载后,则会注册计算机上剩余的最新版本并立即使用。
管理多个版本的 ASP.NET
.NET Framework 允许在同一台计算机上安装多个版本的运行时。它允许 ASP.NET 应用程序使用需要运行的版本,而不会影响其他的应用程序。以下部分描述如何在同一台计算机上安装、卸载和重新分发多个 ASP.NET 版本。
安装多个版本的 ASP.NET
要将 ASP.NET 版本添加到计算机上,请为要安装的版本运行 .NET Framework 可重新分发包安装程序 (Dotnetfx.exe)。如果满足以下条件,则在安装过程中默认自动重新配置所有现有的 ASP.NET 应用程序以使用运行时的安装版本:
安装的 .NET Framework 版本比当前映射到应用程序的版本高。
安装的 .NET Framework 版本与映射到应用程序的版本兼容。通常,版本号决定了兼容性。较小的修订和内部版本号码更改通常是兼容的,而较大的修订号码则是不兼容的。
警告 虽然在满足上述条件的情况下自动更新 ASP.NET 应用程序以使用 ASP.NET 的安装版本,但是,并不将当前 Machine.config 文件中的自定义配置设置转移到安装的 Machine.config 文件。如果应用程序使用自定义的配置设置,要确保手动更新新的 Machine.config 文件,或者使用 ASP.NET IIS 注册工具 (Aspnet_regiis.exe) 将应用程序重新映射到先前的 ASP.NET 版本。有关重新映射应用程序的详细信息,请参阅为 ASP.NET 版本配置 ASP.NET 应用程序。
要防止将所有现有应用程序自动重新映射到 .NET Framework 的安装版本,请使用 /noaspupgrade 命令行选项及 Dotnetfx.exe 安装程序。下面显示了整个命令行:
Dotnetfx.exe /c:"install /noaspupgrade"
有关 .NET Framework 可重新分发包的详细信息,请参阅重新分发 .NET Framework。
IIS 6.0 中的 Web 服务扩展
如果使用的是 Internet 信息服务 6.0,则在安装 ASP.NET 后,可能需要在 Internet 信息服务管理控制台中启用 ASP.NET。IIS 6.0 引入了新的“Web 服务扩展”文件夹,它允许管理员有选择性地启用和禁用 IIS 中的功能。在使用 IIS 6.0 的计算机上安装 ASP.NET 1.1 或更高版本时,安装脚本为该 ASP.NET 版本创建一个配置数据库项。此配置数据库项允许 ASP.NET 作为可配置的组件出现在控制台中。并为安装的每个 ASP.NET 版本创建一个单独的项,以便在控制台中单独配置每个版本。在从计算机中卸载某个 ASP.NET 版本时,还会删除相应的项。
注意 在通过控制面板中的“添加或删除程序”项或“配置您的服务器向导”安装 ASP.NET 时,就会默认在 Web 服务扩展中启用 ASP.NET。但是,如果通过 Microsoft Visual Studio .NET、Windows Update 或 .NET Framework 可重新分发包 (Dotnetfx.exe) 进行安装,则默认禁用 ASP.NET。
管理“Web 服务扩展”文件夹中的项目
在 IIS 管理器中,展开“本地计算机”,然后单击“Web 服务扩展”文件夹。
单击“扩展”选项卡,然后单击要配置的 Web 服务扩展项目。
单击“允许”或“禁止”按钮以启用或禁用该项目。
单击“添加一个新的 Web 服务扩展”链接以便将新的项目添加到控制台中。
卸载 ASP.NET 版本
如果在一台计算机上安装了多个 ASP.NET 版本,则可以逐个卸载版本。通常,ASP.NET 卸载是通过控制面板上的“添加或删除程序”项卸载 .NET Framework 来完成的。在卸载期间,安装程序使用 -u 选项(卸载标志)调用 ASP.NET IIS 注册工具 (Aspnet_regiis.exe)。
注意 如果只想卸载 ASP.NET 版本而不卸载关联的 .NET Framework,则可以直接使用 Aspnet_regiis.exe。每个 .NET Framework 安装包含该工具的一个关联版本。要只卸载 ASP.NET,请使用与要卸载的 ASP.NET 版本关联的工具版本的 -u 选项。详细信息,请参阅 ASP.NET IIS 注册工具 (Aspnet_regiis.exe)。
Aspnet_regiis.exe 的 -u 选项执行以下操作:
将当前映射到要卸载的 ASP.NET 版本的所有 ASP.NET 应用程序重新映射到计算机上的次最新兼容版本。如果兼容版本不存在,则完全删除应用程序的脚本映射。
警告 如果删除脚本映射,就会导致 IIS 将 ASP.NET 页作为文本处理。这就存在将源代码公开给客户端的潜在可能性。
ASP.NET 状态服务是所有兼容 ASP.NET 版本共享的,并且始终将其映射到安装的最新 ASP.NET 版本上。如果要卸载的 ASP.NET 版本当前为最新版本,则随后注册计算机上的次最高兼容版本以替代该版本。如果兼容版本不存在,则卸载 ASP.NET 状态服务。
对于要卸载的版本,删除其特定的性能对象及关联的性能计数器。将适用于所有安装的 ASP.NET 版本的通用性能对象和计数器 ASP.NET 和 ASP.NET Applications 定向到计算机上保留的最新安装版本。
ASPNET 用户帐户是所有兼容 ASP.NET 版本共享的。如果计算机未保留其他的 ASP.NET 安装,则删除 ASPNET 用户帐户及关联的访问控制列表。
有关安装多个 ASP.NET 版本的其他影响的信息,请参阅 ASP.NET 并行支持概述。
第三方重新分发 .NET Framework
依据特殊的重新分发许可证,第三方应用程序可以将 .NET Framework 作为其安装的一部分打包和安装。这允许应用程序安装它需要运行的特定 .NET Framework 版本。为应用程序提供了 .NET Framework 可重新分发包 (Dotnetfx.exe) 以便在运行时进行部署。Dotnetfx.exe 的默认安装脚本可能并不满足您的应用程序的需要。在将 .NET Framework 作为应用程序安装的一部分进行安装时,要求第三方应用程序开发人员使用下述选项。
有关 .NET Framework 可重新分发包的详细信息,请参阅重新分发 .NET Framework。有关可重新分发包的 EULA 的详细信息,请参阅 .NET Framework 帮助中的“获取 .NET Framework 可重新分发包的位置”主题。
禁用自动脚本映射更新
默认情况下,在包含现有安装的计算机上安装 .NET Framework 时,自动更新所有 ASP.NET 应用程序以使用此 .NET Framework 版本,除非将应用程序绑定到不兼容的运行时版本或更高的运行时版本。通常,只有系统管理员能够执行此类安装。在将 .NET Framework 作为应用程序安装的一部分进行安装时,不应强制计算机上的其他应用程序使用该运行时版本。
作为安装脚本的一部分,Dotnetfx.exe 通常使用 -i 选项调用 ASP.NET IIS 注册工具 (Aspnet_regiis.exe) 来安装 ASP.NET。此选项试图更新所有现有 ASP.NET 应用程序的脚本映射。要禁止安装自动更新计算机上的其他应用程序,应提供 /noaspnetupgrade 选项作为 Dotnetfx.exe 的一部分。此选项导致安装程序使用 Aspnet_regiis.exe 的 -ir 选项,它跳过自动脚本映射更新、默认文档和 MIME 交换步骤。下面显示了整个命令行。
Dotnetfx.exe /c:"install /noaspupgrade"
手动更新脚本映射
有时,必须手动安装应用程序的脚本映射。如果应用程序需要其自己的虚拟目录(安装 .NET Framework 版本的目标位置),则确保应用程序的安装程序还要使用 -s 或 -sn 选项显式调用 Aspnet_regiis.exe 以安装脚本映射。
下行显示用于为名为 SampleApp1 的应用程序更新脚本映射的示例命令行。
Aspnet_regiis.exe -s W3SVC/1/ROOT/SampleApp1.
详细信息,请参阅 ASP.NET IIS 注册工具 (Aspnet_regiis.exe)。 |
|