什么是ASP.NET中的HttpHandler

时间:2008-12-24 09:52:10

标签: asp.net httphandler ihttphandler ihttpasynchandler

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

6 个答案:

答案 0 :(得分:75)

最简单的说,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服务处理程序(.asmx):处理Web服务页面
  • 跟踪处理程序(trace.axd):处理跟踪功能

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

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

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

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

答案 1 :(得分:14)

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

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

答案 2 :(得分: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;}

答案 3 :(得分:0)

任何实现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) - 处理跟踪功能

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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应用程序提供各种大小的图像,您可以编写自定义处理程序来调整图像大小,然后将其作为处理程序的响应发送回用户。 / p>

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