代码改变世界

HttpHandler初探 - 页面上输出图像

2009-06-26 13:05  三把刷子  阅读(352)  评论(1编辑  收藏  举报

ASP.NET处理底层HTTP请求有2种方式:

1)HttpModule      2) HttpHandler

今天我们来看一下HttpHandler的基本应用。


场景:利用HttpHandler在页面上输出一张图像。

在项目中添加HttpHandler的方法有2种:

一种是利用VS2008自带的Generic Handler模板添加扩展名为.ashx的文件。

另一种是利用WebConfig文件中的HttpHandler映射。

 

方法一(ashx模板):

首先利用VS2008自带的Generic Handler模板添加扩展名为.ashx的文件,

ashx代码如下:

using System;
using System.Web;

namespace AspNet35.Advanced
{   
    public class picHandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "image/jpeg";
            context.Response.WriteFile("../Images/Garden.jpg");
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
 

 然后在显示图片的页面中将<img>的源指向该ashx文件,aspx文件代码如下:

<div>
    <img src="picHandler.ashx" />
</div>
 

方法二(WebConfig映射):

首先建立一个实现IHttpHandler接口的类,代码如下:

using System.Web;

public class MyPicHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "image/jpeg";
        context.Response.WriteFile("~/Images/Sea.jpg");
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}
 

然后在WebConfig文件中映射该类,Web.config代码如下:

<system.web>
  <httpHandlers>   
    <add verb="*" path="MyImage" type="MyPicHandler, App_Code" />
  </httpHandlers>
</system.web>
 

最后在page页面中将<img>的源指向webconfig文件中映射的别名,既path后面的名字,page代码如下:

<div>
    <img src="MyImage" />
</div>