一般咱们常常,经过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接口的定义就能够了的