大家應該都希望有一種應用程序級的簡單處理程序,今天剛好被人問及,所以就簡單寫了下代碼,具體步驟如下:
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文件時就會觸發一般處理程序。
防盜鏈、防下載都可以采用這種方式處理。