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