日期:2014-05-19  浏览次数:20842 次

ASP.NET防盗链IHttpHandler源码(如何做的?)
请问:
ASP.NET防盗链IHttpHandler源码(如何做的?)
有代码,但不知怎么做!请教,多谢!
下面是在其它地方看到的:


http://www.17doc.com/archive/ASPNET_Nolink_Source.html




------解决方案--------------------
解决方法:
(一) 创建一个继承了System.Web.IHttpHandler接口的类
在System.Web.IHttpHandler接口有两个成员ProcessRequest()方法和IsReusable()属性。ProcessRequest(System.Web.HttpContext context) 方法,除了用户自定义中被要求处理的特殊的http请求。其中的参数 System.Web.HttpContext 类的实例装入了一个http请求中http协议中要求的所有信息。其中System.Web.HttpContext 类中包含有属性 Request 使得从客户端发送过来的http请求信息的值可以被方便地读取;属性Response 它封装了需要返回给客户端的信息和操作。
IsReusable()属性要置为true.

(二) 创建一个资源图片的方法Real()
1. 若是盗链服务器给其错误图片。
2. 若不是盗链服务器给其正常的图片。
在Real()方法中用到了FileInfo 这个类去取得图片的扩展名并用来判断图片的类型.

(三) 注意页面的缓存(response.Expires=1;获取和设置浏览器上缓存的页过期之前的分钟数.如果用户在页过期之前返回同一页,则显示缓存的内容)

(四) 配置应用程序扩展名映射
因为IIS在接收到aspx页面请求时,会为其自动加载一个C:\WINDOWS\Micosoft.NET\Framework\v1.1.4322
\aspnet_isapi.dll文件。
虚拟目录和文件夹的属性里面的”执行许可”改为“纯脚本”。
若是有多个Web.config那么只要在总目录下有就可以了,其它地方的均可删除。
(五) 在 Web.config这个网络应用程序配置文件中加入注册信息
<system.web>
<httpHandlers>
<add verb = "* " path = "*.jpg\.ief\.jpg\.jepg\.bmp\.png\.tif\.emf\.ras\.pnm\.pbm\.pgm
\.ppm\.rgb\.xbm\.xpm\.xwd\.did\.ico\.emf "type= "HandlerExample.HttphandlerTest,HandlerExample "/>
.
.
</httpHandlers>
</system.web>