• λ我爱Aspx >> Asp.Net >> 使用HttpHandler实现URL重写
  • 使用HttpHandler实现URL重写

  • :未知  Դ:非寒日志  :2007-4-21 0:47:44  ؼ:
  • 1. 已配置的文件扩展名映射

讨论 IIS 如何管理传入请求稍稍超出了本文范围。但是可以在 Michele Leroux Bustamante 的文章 Inside IIS and ASP.NET 中找到对此内容的深入讨论。ASP.NET 引擎仅处理那些扩展名已明确映射至 IIS 中的 aspnet_isapi.dll 的传入 Web 请求,了解这一点非常重要。

使用 ISAPI 筛选器检查请求

IIS 除了可以将传入 Web 请求的文件扩展名映射到相应的 ISAPI 扩展之外,还将执行许多其他任务。例如,IIS 将尝试对发出请求的用户进行身份验证,并确定通过身份验证的用户是否有权限访问被请求的文件。在处理请求的有效期内,IIS 将经历几个状态。在每个状态下,IIS 都将引发可以使用 ISAPI 筛选器以编程方式进行处理的事件。

与 ISAPI 扩展一样,ISAPI 筛选器是在 Web 服务器上安装的非托管代码块。ISAPI 扩展被设计为可以响应针对特定文件类型的请求。另一方面,ISAPI 筛选器还包含可以对 IIS 引发的事件进行响应的代码。ISAPI 筛选器可以截取甚至修改传入和传出的数据。ISAPI 筛选器可以应用于很多方面,包括:

身份验证和授权。
记录和监视。
HTTP 压缩。
URL 重写。

虽然 ISAPI 筛选器可用于执行 URL 重写,但本文将讨论如何使用 ASP.NET 实现 URL 重写。不过,我们将对使用 ISAPI 筛选器与使用 ASP.NET 中的技术实现 URL 重写进行权衡。

请求进入 ASP.NET 引擎时将会发生什么情况

在 ASP.NET 之前,需要使用 ISAPI 筛选器来实现 IIS Web 服务器上的 URL 重写。由于 ASP.NET 引擎与 IIS 非常相似,因此可以使用 ASP.NET 进行 URL 重写。存在相似之处的原因在于 ASP.NET 引擎可以实现以下功能:

在处理请求时可以引发事件。
允许任意数量的 HTTP 模块处理所引发的事件,这与 IIS 的 ISAPI 筛选器相似。
将呈现被请求资源这项任务委托给 HTTP 处理程序,该处理程序与 IIS 的 ISAPI 扩展相似。

与 IIS 一样,ASP.NET 引擎在请求的有效期内将会触发事件,通过发信号来表示其处理过程从一个状态改变为了另一个状态。例如,当 ASP.NET 引擎首次响应请求时,BeginRequest Ҷƪл˵?

  • һƪASP.NET 2.0 数据绑定高级技巧
    һƪ用ASP列出目录及文件