HttpHandler中Session的用法

   一般咱們常常,經過session斷定用戶是否登陸。還有一些臨時的、重要的數據也嚐嚐存放在Session中。session

在頁面咱們很容易的獲得Session的值,但在類中就會遇到一些問題。也知道經過下面的方法獲得。ide

System.Web.HttpContext.Current.Session[ " userinfo "];

  可是今天此種方法也失靈了。在作一個小應用時,須要實現IHttpHandler,同時也須要用到用戶的標識。可是在這個類中怎麼也不能找到Session的值,曝出System.Web.HttpContext.Current.Session爲nullpost

 

解決方法:ui

  在實現IHttpHandler的同時,也要實現IRequiresSessionState接口,其命名空間爲:System.Web.SessionState。spa

public class WatermarkHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState{ dot.gif}

  IRequiresSessionState
code

  指定目標 HTTP 處理程序須要對會話狀態值具備讀寫訪問權。這是一個標記接口,沒有任何方法。blog

  做用:接口

在自定義 HTTP 處理程序中實現 IRequiresSessionState 接口,以肯定處理程序是否須要對會話狀態值具備讀寫訪問權
  

自定義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接口的定義就能夠了的

相關文章
相關標籤/搜索