如何才能防止encry目錄下的所有文件被非法下載呢?我們可以應(yīng)用IIS中的應(yīng)用程序映射結(jié)合ASP.NET中的IHttpHandler自定義權(quán)限,把IIS應(yīng)用程序映射用于所有文件,并將控制權(quán)交給我們自己實(shí)現(xiàn)的IHttpHandler。
首先添加應(yīng)用程序映射:打開IIS管理器->右擊我們要控制下載的站點(diǎn)->在屬性對(duì)話框中“配置...”,將文件改為你自己.netFramework ASPnet_isapi.dll的路徑。
然后修改web.config,在system.web下添加httpHandlers項(xiàng),
<system.web>
...
<httpHandlers>
<add verb="*" path="encry/*.*" type="CustomHttpHandler.Class1,CustomHttpHandler"></add>
</httpHandlers>
...
</system.web> |
下面來實(shí)現(xiàn)IHttpHandler
//------------------------file:Class1.cs---------
using System;
using System.Web;
namespace CustomHttpHandler
{
/// <summary>
/// Class1 的摘要說明。
/// </summary>
public class Class1 : System.Web.IHttpHandler
{
public Class1()
{
//
// TODO: 在此處添加構(gòu)造函數(shù)邏輯
//
}
#region IHttpHandler 成員
public void ProcessRequest(HttpContext context)
{
// TODO: 添加 Class1.ProcessRequest 實(shí)現(xiàn)
// string strRefUrl=context.Request.ServerVariables["HTTP_REFERER"];
/*插入您自己的代碼,讀文件內(nèi)容并填充Response,該例僅簡(jiǎn)單返回一條錯(cuò)誤信息*/
context.Response.Write("您無法訪問該頁");
}
public bool IsReusable
{
get
{
// TODO: 添加 Class1.IsReusable getter 實(shí)現(xiàn)
return false;
}
}
#endregion
}
} |