ASP.NET中的HttpHandler是什么?为什么以及如何使用它?
答案 0 :(得分:75)
最简单的说,ASP.NET HttpHandler是一个实现System.Web.IHttpHandler
接口的类。
ASP.NET HTTPHandlers负责拦截对ASP.NET Web应用程序服务器发出的请求。它们作为响应对ASP.NET站点发出的请求的进程运行。最常见的处理程序是处理.aspx文件的ASP.NET页面处理程序。当用户请求.aspx文件时,页面通过页面处理程序处理请求。
ASP.NET提供了一些默认HTTP处理程序:
您可以创建自己的自定义HTTP处理程序,将自定义输出呈现给浏览器。 ASP.NET中HTTP处理程序的典型方案是例如
您实现 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默认处理程序是:
答案 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模块。