什么是ASP.NET中的HttpHandler

问题描述 投票:62回答:6

ASP.NET中的HttpHandler是什么?为什么以及如何使用它?

asp.net httphandler ihttphandler ihttpasynchandler
6个回答
79
投票

最简单的说,ASP.NET HttpHandler是一个实现System.Web.IHttpHandler接口的类。

ASP.NET HTTPHandler负责拦截对ASP.NET Web应用程序服务器发出的请求。它们作为响应对ASP.NET站点发出的请求的进程运行。最常见的处理程序是处理.aspx文件的ASP.NET页面处理程序。当用户请求.aspx文件时,页面通过页面处理程序处理请求。

ASP.NET提供了一些默认的HTTP处理程序:

  • 页面处理程序(.aspx):处理网页
  • 用户控制处理程序(.ascx):处理Web用户控制页面
  • Web服务处理程序(.asmx):处理Web服务页面
  • 跟踪处理程序(trace.axd):处理跟踪功能

您可以创建自己的自定义HTTP处理程序,将自定义输出呈现给浏览器。例如,ASP.NET中HTTP处理程序的典型方案

  • 交付动态创建的图像(例如图表)或调整大小的图片。
  • 发送RSS格式XML的RSS源

您可以实现IHttpHandler接口来创建同步处理程序,并使用IHttpAsyncHandler接口来创建异步处理程序。接口要求您实现ProcessRequest方法和IsReusable属性。

ProcessRequest方法处理所做请求的实际处理,而布尔值IsReusable属性指定是否可以合并您的处理程序以便重用(以提高性能)或每个请求是否需要新的处理程序。


15
投票

HttpHandler(或IHttpHandler)基本上是负责提供内容的任何东西。 ASP.NET页面(aspx)是一种处理程序。

例如,您可以编写自己的图像来从数据库而不是从Web服务器本身提供图像等,或编写简单的POX服务(而不是SOAP / WCF /等)


2
投票

HttpHandler示例,

ASP.NET 2.0中的HTTP处理程序

处理程序负责完成来自浏览器的请求。浏览器管理的请求由文件扩展名处理或直接调用处理程序。用于处理传入Http请求的低级请求和响应API是Asp.Net中的Http Handler。所有处理程序都实现IHttpHandler接口,该接口位于System.Web命名空间中。处理程序有点类似于Internet服务器应用程序编程接口(ISAPI)扩展。

实现IHttpHandler接口以创建同步处理程序和IHttpAsyncHandler接口以创建异步处理程序。接口要求您实现ProcessRequest方法和IsReusable属性。 ProcessRequest方法处理所做请求的实际处理,而布尔IsReusable属性指定是否可以将处理程序池化以便重用以提高性能,或者是否每个请求都需要新的处理程序。

.ashx文件扩展名保留给自定义处理程序。如果您创建文件扩展名为.ashx的自定义处理程序,它将自动在IIS和ASP.NET中注册。如果选择使用备用文件扩展名,则必须在IIS和ASP.NET中注册扩展名。使用.ashx以外的扩展名的优点是可以为一个处理程序分配多个文件扩展名。

配置HTTP处理程序

配置节处理程序负责将传入的URL映射到IHttpHandler或IHttpHandlerFactory类。它可以在计算机,站点或应用程序级别声明。子目录继承这些设置。管理员使用tag指令配置该部分。指令以自上而下的顺序进行解释和处理。对节处理程序使用以下语法:

创建HTTP处理程序

要创建HTTP处理程序,必须实现IHttpHandler接口。 IHttpHandler接口有一个方法和一个具有以下签名的属性:void ProcessRequest(HttpContext); bool IsReusable {get;}


1
投票

任何实现System.Web.IHttpHandler接口的类都会成为HttpHandler。此类作为响应对ASP.NET站点发出的请求的进程运行。

最常见的处理程序是处理.aspx文件的ASP.NET页面处理程序。当用户请求.aspx文件时,页面通过页面处理程序(实现System.Web.IHttpHandler接口的类)处理请求。

您可以创建自己的自定义HTTP处理程序,将自定义输出呈现给浏览器。

一些ASP.NET默认处理程序是:

  1. 页面处理程序(.aspx) - 处理网页
  2. 用户控制处理程序(.ascx) - 处理Web用户控制页面
  3. Web服务处理程序(.asmx) - 处理Web服务页面
  4. 跟踪处理程序(trace.axd) - 处理跟踪功能

1
投票

ASP.NET HTTP处理程序是响应对ASP.NET Web应用程序发出的请求而运行的进程(通常称为“端点”)。最常见的处理程序是处理.aspx文件的ASP.NET页面处理程序。当用户请求.aspx文件时,页面通过页面处理程序处理请求。您可以创建自己的HTTP处理程序,将自定义输出呈现给浏览器。


1
投票

ASP.NET HTTP处理程序是响应对ASP.NET Web应用程序发出的请求而运行的进程(通常称为“端点”)。最常见的处理程序是处理.aspx文件的ASP.NET页面处理程序。当用户请求.aspx file时,页面处理程序会通过页面处理请求。

ASP.NET页面处理程序只是一种处理程序。 ASP.NET附带了其他几个内置处理程序,例如.asmx files的Web服务处理程序。

如果需要使用应用程序中的文件扩展名识别的特殊处理,可以创建自定义HTTP处理程序。例如,以下方案将是自定义HTTP处理程序的良好用法:

RSS提要要为站点创建RSS提要,您可以创建一个发出RSS格式的XML的处理程序。然后,您可以将应用程序中的.rss扩展名(例如)绑定到自定义处理程序。当用户向您的站点发送以.rss结尾的请求时,ASP.NET将调用您的处理程序来处理请求。

图像服务器如果希望Web应用程序提供各种大小的图像,可以编写自定义处理程序来调整图像大小,然后将其作为处理程序的响应发送回用户。

HTTP处理程序可以访问应用程序上下文,包括请求用户的身份(如果已知),应用程序状态和会话信息。当请求HTTP处理程序时,ASP.NET在适当的处理程序上调用ProcessRequest方法。处理程序的ProcessRequest方法创建一个响应,并将其发送回请求的浏览器。与任何页面请求一样,响应通过任何已订阅处理程序运行后发生的事件的HTTP模块。

© www.soinside.com 2019 - 2024. All rights reserved.