HttpHandler是一个HTTP请求的真正处理中心。在HttpHandler容器中,ASP.NET Framework才调用HttpHandler的ProcessRequest成员方法来对这个HTTP请求进行真正的处理,真正地对客户端请求的服务器页面做出编译和执行,并将处理过后的信息附加在HTTP请求信息流中再次返回到HttpModule中。
Framework提供了一系列的接口和类,允许你对于Http请求进行编程,而实现这一操作的一个主要的接口,就是 IHttpHandler(另一个是IHttpModule)。
.ashx文件用于写web handler,使用.ashx可以让你专注于编程而不用管相关的WEB技术。.ashx对应的类继承于IHttpHandler,所以,.ashx必须包含IsResuable属性,必须实现ProcessRequest方法。
IHttpHandler接口,定义ASP.NET为使用自定义HTTP处理程序同步处理HTTP Web请求而实现的协定。
IsResuable属性指的是IHttpHandler是否可以被再次使用。
ProcessRequest方法则是实现HTTP Web的请求处理。
![ContractedBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
2 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
3 public class FirstHandler : IHttpHandler
4 {
5
6 public void ProcessRequest(HttpContext context)
7 {
8 context.Response.ContentType = " text/plain " ;
9 context.Response.Write( " Hello World " );
10 }
11
12 public bool IsReusable
13 {
14 get
15 {
16 return false ;
17 }
18 }
19 }
其实用.aspx文件可以完全实现.ashx的功能,.ashx比着.aspx的优点是性能高一些,它免去了.aspx页面的控件解析以及页面处理过程。它特别适合于生成动态图片,生成动态文本之类,实现某一具体功能的操作。
对于一些比较复杂的功能,比如需要处理回发控件的事件,则不太适合。