什么是 ASP.NET 中的 HttpHandler?为什么以及如何使用它?
6 回答
用最简单的术语来说,ASP.NET HttpHandler 是一个实现System.Web.IHttpHandler
接口的类。
ASP.NET HTTPHandlers 负责拦截对您的 ASP.NET Web 应用程序服务器发出的请求。它们作为进程运行以响应对 ASP.NET 站点的请求。最常见的处理程序是处理 .aspx 文件的 ASP.NET 页面处理程序。当用户请求 .aspx 文件时,该请求由页面通过页面处理程序进行处理。
ASP.NET 提供了一些默认的 HTTP 处理程序:
- 页面处理程序 (.aspx):处理网页
- 用户控制处理程序 (.ascx):处理 Web 用户控制页面
- Web Service Handler (.asmx):处理 Web 服务页面
- 跟踪处理程序 (trace.axd):处理跟踪功能
您可以创建自己的自定义 HTTP 处理程序,将自定义输出呈现给浏览器。例如,ASP.NET 中 HTTP 处理程序的典型场景是
- 交付动态创建的图像(例如图表)或调整大小的图片。
- 发出 RSS 格式的 XML 的 RSS 提要
您实现接口以IHttpHandler
创建同步处理程序,并实现IHttpAsyncHandler
接口以创建异步处理程序。接口要求您实现ProcessRequest
方法和IsReusable
属性。
该ProcessRequest
方法处理发出的请求的实际处理,而布尔IsReusable
属性指定您的处理程序是否可以合并以供重用(以提高性能),或者每个请求是否需要一个新的处理程序。
HttpHandler
(或IHttpHandler
)基本上是负责提供内容的任何东西。ASP.NET 页面 (aspx) 是一种处理程序。
您可以自己编写,例如,从数据库而不是 Web 服务器本身提供图像等,或者编写一个简单的 POX 服务(而不是 SOAP/WCF/等)
HttpHandler 示例,
ASP.NET 2.0 中的 HTTP 处理程序
处理程序负责完成来自浏览器的请求。浏览器管理的请求要么通过文件扩展名处理,要么通过直接调用处理程序来处理。用于服务传入 Http 请求的低级请求和响应 API 是 Asp.Net 中的 Http 处理程序。所有处理程序都实现 IHttpHandler 接口,该接口位于 System.Web 命名空间中。处理程序有点类似于 Internet 服务器应用程序编程接口 (ISAPI) 扩展。
您实现 IHttpHandler 接口以创建同步处理程序,并实现 IHttpAsyncHandler 接口以创建异步处理程序。这些接口要求您实现 ProcessRequest 方法和 IsReusable 属性。ProcessRequest 方法处理发出的请求的实际处理,而 Boolean IsReusable 属性指定您的处理程序是否可以合并以重用以提高性能,或者每个请求是否需要一个新的处理程序。
.ashx 文件扩展名是为自定义处理程序保留的。如果您创建一个文件扩展名为 .ashx 的自定义处理程序,它将自动在 IIS 和 ASP.NET 中注册。如果您选择使用备用文件扩展名,则必须在 IIS 和 ASP.NET 中注册该扩展名。使用 .ashx 以外的扩展名的优点是您可以将多个文件扩展名分配给一个处理程序。
配置 HTTP 处理程序
配置节处理程序负责将传入的 URL 映射到 IHttpHandler 或 IHttpHandlerFactory 类。它可以在计算机、站点或应用程序级别声明。子目录继承这些设置。管理员使用标签指令来配置该部分。指令以自上而下的顺序进行解释和处理。对节处理程序使用以下语法:
创建 HTTP 处理程序
要创建 HTTP 处理程序,您必须实现 IHttpHandler 接口。IHttpHandler 接口有一个方法和一个属性,签名如下: void ProcessRequest(HttpContext); 布尔 IsReusable {get;}
任何实现System.Web.IHttpHandler
接口的类都变成HttpHandler
. 并且此类作为进程运行以响应对 ASP.NET 站点的请求。
最常见的处理程序是处理 .aspx 文件的 ASP.NET 页面处理程序。当用户请求一个 .aspx 文件时,请求由页面通过页面处理程序(实现System.Web.IHttpHandler
接口的类)进行处理。
您可以创建自己的自定义 HTTP 处理程序,将自定义输出呈现给浏览器。
一些 ASP.NET 默认处理程序是:
- 页面处理程序 (.aspx) – 处理网页
- 用户控制处理程序 (.ascx) – 处理 Web 用户控制页面
- Web 服务处理程序 (.asmx) – 处理 Web 服务页面
- 跟踪处理程序 (trace.axd) – 处理跟踪功能
ASP.NET HTTP 处理程序是响应对 ASP.NET Web 应用程序发出的请求而运行的进程(通常称为“端点”)。最常见的处理程序是处理 .aspx 文件的 ASP.NET 页面处理程序。当用户请求 .aspx 文件时,该请求由页面通过页面处理程序进行处理。您可以创建自己的 HTTP 处理程序,将自定义输出呈现给浏览器。
处理程序是响应对 ASP.NET Web 应用程序发出的请求而运行的ASP.NET HTTP
进程(通常称为“端点”)。最常见的处理程序是处理 .aspx 文件的 ASP.NET 页面处理程序。当用户请求 时.aspx file
,请求由页面通过页面处理程序处理。
ASP.NET 页面处理程序只是一种处理程序。ASP.NET 附带几个其他内置处理程序,例如.asmx files
.
当您需要可以在应用程序中使用文件扩展名识别的特殊处理时,您可以创建自定义 HTTP 处理程序。例如,以下场景可以很好地使用自定义 HTTP 处理程序:
RSS 提要 要为站点创建 RSS 提要,您可以创建一个发出 RSS 格式的 XML 的处理程序。然后,您可以将应用程序中的 .rss 扩展名(例如)绑定到自定义处理程序。当用户向您的站点发送以 .rss 结尾的请求时,ASP.NET 将调用您的处理程序来处理该请求。
图像服务器 如果您希望您的 Web 应用程序提供各种尺寸的图像,您可以编写一个自定义处理程序来调整图像大小,然后将它们作为处理程序的响应发送回用户。
HTTP 处理程序可以访问应用程序上下文,包括请求用户的身份(如果已知)、应用程序状态和会话信息。当请求 HTTP 处理程序时,ASP.NET 调用ProcessRequest
相应处理程序上的方法。处理程序的ProcessRequest
方法创建一个响应,该响应被发送回请求浏览器。与任何页面请求一样,响应会通过任何订阅了在处理程序运行后发生的事件的 HTTP 模块。