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接口的定义就能够了的

相关文章
相关标签/搜索