大家應該都希望有一種應用程式級的簡單處理常式,今天剛好被人問及,所以就簡單寫了下代碼,具體步驟如下:
1、建立一個類庫項目,名為IHandlers,名稱自訂
2、在類庫項目中添加【ASP.NET處理常式】,名為HandleSession.cs。開啟此檔案,添加引用:
using System.Web.SessionState
讓HandleSession類繼承介面IReadOnlySessionState。
以上兩步是為了可以使用Session對象。
該類的完整代碼如下: 複製代碼 代碼如下:using System;
using System.Web;
using System.Web.SessionState;
namespace IHandlers
{
public class HandleSession : IHttpHandler, IReadOnlySessionState
{
/// <summary>
/// 您將需要在您網站的 web.config 檔案中配置此處理常式,
/// 並向 IIS 註冊此處理常式,然後才能進行使用。有關詳細資料,
/// 請參見下面的連結: http://go.microsoft.com/?linkid=8101007
/// </summary>
#region IHttpHandler Members
public bool IsReusable
{
// 如果無法為其他請求重用託管處理常式,則返回 false。
// 如果按請求保留某些狀態資訊,則通常這將為 false。
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
//在此寫入您的處理常式實現。
if (context.Session["UID"] == null)
{
context.Response.Redirect("http://www.baidu.com");
}
}
#endregion
}
}
實際上就是判斷如果Session對象不存在就跳轉到百度首頁。
3、編譯類庫項目,產生dll,在網站中添加對此dll的引用
4、在網站的web.config中註冊此處理常式,在<httpHandlers></httpHandlers>中添加下面一行代碼, 複製代碼 代碼如下:<httpHandlers>
<add verb="*" path="temp/*.aspx" type="IHandlers.HandleSession, IHandlers" />
</httpHandlers>
path:指定的是根目錄下/temp檔案夾下的所有*.aspx檔案
type:命名空間名.類名,程式集名
更多參數說明請參考微軟 MSDN
如此處理之後,當使用者訪問temp檔案夾下的aspx檔案時就會觸發一般處理常式。
防盜鏈、防下載都可以採用這種方式處理。