使用httpHandle來實現,對圖片檔案的請求做專門的處理
第一步:建立一個類,繼承自IHttpHandler,代碼如下
C# code
using System;
using System.Web;
namespace CustomHandler{
public class JpgHandler : IHttpHandler{
public void ProcessRequest(HttpContext context){
// 擷取檔案伺服器端實體路徑
string FileName = context.Server.MapPath(context.Request.FilePath);
// 如果UrlReferrer為空白,則顯示一張預設的禁止盜鏈的圖片
if (context.Request.UrlReferrer.Host == null){
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile("/error.jpg");
}else{
// 如果 UrlReferrer中不包含自己網站主機網域名稱,則顯示一張預設的禁止盜鏈的圖片
if (context.Request.UrlReferrer.Host.IndexOf("yourdomain.com") > 0){
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile(FileName);
}else{
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile("/error.jpg");
}
}
}
public bool IsReusable{
get{ return true; }
}
}
}
第二步:編譯成DLL
csc /t:library CustomHandler.cs
第三步:添加編譯好的DLL引用到當前網站的bin檔案夾下
第四步:在Web.Config 中註冊這個Handler
C# code
<system.web>
<httpHandlers>
<add path="*.jpg,*.jpeg,*.gif,*.png,*.bmp" verb="*" type="CustomHandler.JpgHandler,CustomHandler" />
</httpHandlers>
</system.web>
//verb指的是請求此檔案的方式,可以是post或get,用*代表所有訪問方式。CustomHandler.JpgHandler表示命名空間和類名,CustomHandler表示程式集名。