什么是ASP.NET中的HttpHandler


Answers:


81

用最简单的术语来说,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方法处理对请求的实际处理,而BooleanIsReusable属性指定是否可以合并处理程序以进行重用(以提高性能),或者每个请求是否需要新的处理程序。


2
您能否解释一下您所说的最常见的处理程序是处理.aspx文件的ASP.NET页处理程序。当用户请求.aspx文件时,页面将通过页面处理程序处理该请求。?否则任何链接将非常非常感谢。谢谢。
Imad Alazani

@PKKG请看一下这篇文章:msdn.microsoft.com/en-us/library/…–
splattne

感谢那。我真的很想知道,当您请求特定页面时,该页面HttpHandler被称为?这是因为该页面派生自然后创建HttpHandlerPage对象,然后调用了页面事件?是这样吗?谢谢你的耐心。
Imad Alazani

@PKKG注意:IHttpHandler是一个接口。类不是从中派生的,而是实现了它。
splattne

16

一个HttpHandler(或IHttpHandler)基本上是什么,它负责提供内容服务。ASP.NET页(aspx)是一种处理程序。

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


1
您可以对此进行解释。例如,您可能编写自己的文件,以便从数据库而不是从Web服务器本身提供图像等,或者编写简单的POX服务(而不是SOAP / WCF / etc)
Imad Alazani

当您请求特定页面时,该页面HttpHandler被称为?这是因为该页面派生自然后创建HttpHandlerPage对象,然后Page Events调用了?是这样吗?
Imad Alazani

2

HttpHandler示例,

ASP.NET 2.0中的HTTP处理程序

处理程序负责满足浏览器的请求。浏览器管理的请求可以通过文件扩展名处理,也可以通过直接调用处理程序来处理。服务于传入Http请求的低级Request和Response 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类。可以在计算机,站点或应用程序级别声明它。子目录继承这些设置。管理员使用tag指令配置该部分。指令以自上而下的顺序进行解释和处理。对节处理程序使用以下语法:

创建HTTP处理程序

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


4
这是从某个地方逐字复制的,可能是24x7aspnet.blogspot.com/2009/06/http-handler-in-aspnet-20.html,并且已经有一个高价值的答案。请至少引用来源。如果您用自己的话回答,那会更好。
GargantuChet 2012年

1

任何实现System.Web.IHttpHandlerInterface的类都将成为HttpHandler。此类作为进程运行,以响应对ASP.NET站点的请求。

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

您可以创建自己的自定义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带有其他一些内置处理程序,例如的Web服务处理程序.asmx files

如果需要特殊处理,可以使用应用程序中的文件扩展名进行标识,则可以创建自定义HTTP处理程序。例如,以下情况将很好地使用自定义HTTP处理程序:

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.