防盜鏈技術可以有效解決網站訪問量不大,但壓力比較大的問題。現在以.jpg檔案為例,在asp.net裡如何?防盜鏈技術。
建立一個asp.net網站,添加兩個圖片檔案:right.jpg,error.jpg,right.jpg為本站顯示的正確的圖片,error.jpg為其他網站訪問時的錯誤圖片。
Default.aspx放置如下代碼:
<asp:Image ID="Image1" runat="server" Height="179px" ImageUrl="~/right.jpg" Width="197px" />
建立Handler.cs類,代碼如下:
using System;
using System.Web;
public class Handler : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.Expires = 0;
context.Response.Clear();
context.Response.ContentType = "image/jpg";
if (context.Request.UrlReferrer.Host == "localhost")
{
context.Response.WriteFile(context.Request.PhysicalPath);
context.Response.End();
}
else
{
context.Response.WriteFile(context.Request.PhysicalApplicationPath+"error.jpg");
context.Response.End();
}
}
public bool IsReusable {
get {
return true;
}
}
}
在web.config的節點中添加以下代碼:
<add verb="*" path="*.jpg" type="Handler"/>
調試該程式,圖片將顯示正常的圖片。
將代碼 if (context.Request.UrlReferrer.Host == "localhost")中的"localhost"給為其他字元,偵錯工具,將顯現error.jpg
這樣就達到了我們所說的圖片防盜鏈技術了。
現在來說下如何在IIS中也顯現這種效果。
選擇網站->右鍵點擊屬性->點擊虛擬目錄->配置->映射->添加
按添加,可執行檔選擇:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
這樣你的網站也實現了防盜鏈技術。