ASP.NET中的HttpHandler

     前面主要学习了有关控件的使用。ASP.NET是以控件配合事件作为代码的开发方式,所以控件在ASP.NET的开发中尤为重要。不过在一些场合使用控件并不能达到目的,例如,在网站中我们基于著作权的保护,对站点中提供的图片要加上网站标识,如果只使用控件根本不可能实现,这就需要用到下面所说的HtppHandler技术。如图1-1.


图1-1

HttpHandler概述

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;


namespace WebApplication1
{
    public class Handler1 : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            context.Response.Write("Hello World");
        }

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

}

这段代码说明context对象可控制输出的内容和类型。ContentType用于设置程序的输入类型,直接访问该HttpHandler程序,会输出“Hello World”的文字。如图1-2所示


图1-2

一、封面数字水印的实现(指定Handler方式)。

现在我们可以通过修改.aspx文件,实现图片添加水印。源代码如下:



图1-3



图1-4


图1-5

还有将所有需要使用数字水印访问图片的路径改为”Handler1.ashx?id=数字“就可以了

二、数字水印的实现(全局Handler方式)

上述方法仍有缺憾,还需要把访问封面图片的路径都修改掉。现在换一种方法,可以不修改任何访问路径的情况下实现图片的数字水印效果。步骤如下

  • 修改Web.config将所有对.jpg内容的访问转到HttpHandler处理程序。
  • 获得访问请求,得到用户访问的图片路径。
  • 根据请求的路径查找相对应的封面图片。
  • 将网站标志在封面图片的左下角输出
  • 修改程序的输出类型,并将组合出的新图片输出

  修改Web.config文件,在文件中添加以下代码行:  


  <httpHandlers>

                 <add verb="*" path="ProductImgs/*.jpg" type="第2章_用户控件与HttpHandler.PicCoverHandler"/>

      </httpHandlers>


verb:指谓词列表可以是逗号分隔的HTTP谓词列表。(例如:“GET”,"PUT","POST").[*]通配符,标识所有请求。

path:指路径属性可以包含单个URL路径或简单的通配符字符串(如*.aspx)。

type:指定逗号分割的类/程序集集合。

此类代码和上述代码非常相似只不过我们不需要获取DVD的ID值了。代码如下:

图2-1

图2-2


图2-3

猜你喜欢

转载自blog.csdn.net/songyayaya/article/details/79923085