IHttpHandler session问题

来源:互联网 发布:淘宝手机助手. 编辑:程序博客网 时间:2024/06/08 01:09

通常我们经常,通过session判定用户是否登录。还有一些临时的、重要的数据也尝尝存放在Session中。

在页面我们很容易的得到Session的值,但在类中就会遇到一些问题。也知道通过下面的方法得到。

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

但是今天此种方法也失灵了。在做一个小应用时,需要实现IHttpHandler,同时也需要用到用户的标识。但是在这个类中怎么也不能找到Session的值,曝出

System.Web.HttpContext.Current.Session为null

 在实现IHttpHandler的同时,也要实现IRequiresSessionState接口,其命名空间为:System.Web.SessionState。

  为什么要实现这个接口呢?这个接口是做什么用的呢?继续追踪,MSDN给了最终解释。

  IRequiresSessionState

  指定目标 HTTP 处理程序需要对会话状态值具有读写访问权。这是一个标记接口,没有任何方法。

  作用:

在自定义 HTTP 处理程序中实现 IRequiresSessionState 接口,以确定处理程序是否需要对会话状态值具有读写访问权
  所以记得哦,如果在自定义HTTP处理程序中,要访问Session,记得一定要实现这个接口哦。


 

加上这句public class CreateCheckNumber : IHttpHandler, IRequiresSessionState

程序里就可以合法访问:

context.Session["SN"] = RandomString;



HttpHandler使用Session

继承自IHttpHandler的类要实现两个接口:ProcessRequestIsReusable
但还不能使用Session,要使用Session需要下面的步骤处理:
 
1、先引用System.Web.SessionState 这个命名空间, 
2、如果是要在HttpHandler 中读取Session的内容,就要在实现IHttpHandler 的类中同时实现IReadOnlySessionState 这个接口。
3、如果是要在HttpHandler 中读写Session的内容,就要在实现IHttpHandler 的类中同时实现IRequiresSessionState

原创粉丝点击