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

解决方案 »

  1.   

    解决方法:
    (一) 创建一个继承了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>