最近学习了一下httphandler的相关知识,做了一个防图片盗链的小例子.

关于httphandler的基本的介绍和技术原理就不介绍了,请谷歌搜索.

首先新建一个Asp.net Web 应用程序,命名为HttpHandlerDemo.

在HttpHandlerDemo中添加Image图片文件夹,放入几张图片,其中一张图片是缺省的图片,一张图片是发生盗链时的图片.

在解决方案下面添加一个类库项目,命名为CustomHttpHandler.

在CustomHttpHandler项目中添加CustomHandler.cs代码文件,内容如下:

View Code

在HttpHandlerDemo项目中添加对CustomHttpHandler项目的引用.

在HttpHandlerDemo项目中的Web.config文件中添加如下配置:

View Code

修改HttpHandlerDemo项目中Default.aspx页面,代码如下:

View Code

这里第二个img的src="http://192.168.3.183/HttpHandlerDemo/Image/girl4.jpg",这个地址是发布到我本机iis后的地址,注意改成你的机器ip或者localhost.

现在将HttpHandlerDemo项目发布到iis上.

做完这些步骤,自己写的httphandler还无法发挥作用.需要在iis中添加.jpg的映射,告诉iis如何处理.jpg的请求.

在HttpHandlerDemo虚拟目录上右键->属性->ASP.NET,查看一下ASP.NET版本,记下版本号.然后选择虚拟目录选项卡,点击右下角的配置->映射->添加,在可执行文件中选择跟你ASP.NET版本相对应的aspnet_isapi.dll,一定要选对版本,如果没选对,httphandler是不会起作用的.比如:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll,扩展名输入.jpg,然后确定.

现在浏览HttpHandlerDemo项目中Default.aspx页,可以看到能够正常显示两张图片.如果在浏览器中直接输入图片地址,如

"http://192.168.3.183/HttpHandlerDemo/Image/girl4.jpg",将会看到防盗链那张图片,如果其他网站引用了这个地址,也会显示防盗链的那张图片.

代码下载:点击下载

posted on 2012-07-30 11:16  xjbest  阅读(730)  评论(0编辑  收藏  举报