Asp.net网站使用HttpHandler实现图片防盗链功能

第一步:创建PicHandler.cs文件,代码如下:

using System.Web;

namespace MyHttpModule

{

public class PicHandler:IHttpHandler

{

public void ProcessRequest(HttpContext context)

{

string strFile = context.Server.MapPath(context.Request.FilePath);

if(context.Request.UrlReferrer==null)

{

context.Response.ContentType = "image/JPEG";

context.Response.WriteFile("/error.jpg");

}

else

{

if(context.Request.UrlReferrer.Host.IndexOf("youdomain.com")>-1)

{

context.Response.ContentType = "imae/jpeg";

context.Response.WriteFile(strFile);

}

else

{

context.Response.ContentType = "image/JPEG";

context.Response.WriteFile("/error.jpg");

}

}

}

/// <summary>

/// 获取一个值,该值指示其他请求是否可以使用IHttpHander实例。也就是后续的Http请求是不是可以继续使用实现了该接口的类的实例

/// </summary>

public bool IsReusable

{

get { return true; }

}

}

}

第二步:编译文件成DLL;

csc /t:library /r:System.Web.dll PicHandler.cs

第三步:将编译妇的DLL拷贝到Bin目录下;

第四步:在Web.config中注册这个Handler;

<httpHandlers>

<add path="*.jpg" verb="*" type="MyHttpHandler.PicHandler,MyHttpHandler"/>

</httpHandlers>

第五步:在IIS中配置应用程序扩展(jpg)

C:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll