一般咱們常常,經過session斷定用戶是否登陸。還有一些臨時的、重要的數據也嚐嚐存放在Session中。session
在頁面咱們很容易的獲得Session的值,但在類中就會遇到一些問題。也知道經過下面的方法獲得。ide
可是今天此種方法也失靈了。在作一個小應用時,須要實現IHttpHandler,同時也須要用到用戶的標識。可是在這個類中怎麼也不能找到Session的值,曝出System.Web.HttpContext.Current.Session爲nullpost
解決方法:ui
在實現IHttpHandler的同時,也要實現IRequiresSessionState接口,其命名空間爲:System.Web.SessionState。spa
IRequiresSessionState
code
指定目標 HTTP 處理程序須要對會話狀態值具備讀寫訪問權。這是一個標記接口,沒有任何方法。blog
做用:接口
自定義HTTPHANDLER 中使用SESSION 的方法get
一、先引用System.Web.SessionState 這個命名空間,it
二、若是是要在HttpHandler 中讀取Session的內容,就要在實現IHttpHandler 的類中同時實現IReadOnlySessionState 這個接口。
三、若是是要在HttpHandler 中讀寫Session的內容,就要在實現IHttpHandler 的類中同時實現IRequiresSessionState
這樣就能夠在自定義的HttpHandler 中正常的使用Session了。
實例:
using System.Web.SessionState;
namespace TzBlog.HttpHandler
{
/// <summary>
/// CheckLoginHttpHandler 的摘要說明。
/// </summary>
public class CheckLoginHttpHandler:IHttpHandler,IReadOnlySessionState,IRequiresSessionState
{
public void Proce***equest (HttpContext context)
{
}
/// <summary>
/// 獲取一個值,該值指示其餘請求是否可使用 IHttpHandler 實例。
/// </summary>
public bool IsReusable
{
get
{
return false;
}
}
}
}
這個是隻讀的,若是要取消只讀的話只要去掉IReadOnlySessionState接口的定義就能夠了的