通常我们经常,通过session判定用户是否登录。还有一些临时的、重要的数据也尝尝存放在Session中。
在页面我们很容易的得到Session的值,但在类中就会遇到一些问题。也知道通过下面的方法得到。
System.Web.HttpContext.Current.Session["userinfo"];
但是今天此种方法也失灵了。在做一个小应用时,需要实现IHttpHandler,同时也需要用到用户的标识。但是在这个类中怎么也不能找到Session的值,曝出
System.Web.HttpContext.Current.Session为null
为什么得到的Session会是空呢?想了好久也没想通。找了好久,才找到了高人的指点,问题得到了解决。
解决方法:
在实现IHttpHandler的同时,也要实现IRequiresSessionState接口,其命名空间为:System.Web.SessionState。
publicclass WatermarkHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState{}
继续追踪:
为什么要实现这个接口呢?这个接口是做什么用的呢?继续追踪,MSDN给了最终解释。
IRequiresSessionState
指定目标 HTTP 处理程序需要对会话状态值具有读写访问权。这是一个标记接口,没有任何方法。
作用:
在自定义 HTTP 处理程序中实现 IRequiresSessionState 接口,以确定处理程序是否需要对会话状态值具有读写访问权
所以记得哦,如果在自定义HTTP处理程序中,要访问Session,记得一定要实现这个接口哦。
切记切记!!!
分享到:
相关推荐
利用IRequiresSessionState让handler获取session
ashx:.ashx文件是主要用来写web handler的。使用.ashx 可以让你专注于编程...ashx必须包含IsReusable属性(这个属性代表是否可复用,通常为true),而如果要在ashx文件用使用Session必须实现IRequiresSessionState接口.
1-在 aspx和aspx.cs中,都是以Session[“xxx”]=”aaa”...2-在ashx文件中,要对Session进行成功的读写,应该在使用 Session的class后增加接口IRequiresSessionState (添加 时可能提示添加命名空间 using System.We
如果要使用session的话,在handler的代码中添加System.Web.SessionState的引用, 并让这个handler继承IRequiresSessionState接口,一定要继承这个接口,否则会出错的。 以上本人简单总结 只有用使用到它才能感觉到...
本例采用asp.net C#+ jquery +ajax的实现 ...如果要使用session的话,在handler的代码中添加System.Web.SessionState的引用, 并让这个handler继承IRequiresSessionState接口,一定要继承这个接口,否则会出错的。
最近在改写WebApp时要将以前用泛型处理例程写的Captcha 改成使用WebApi 来实作机制,在实作的过程中发现使用IRequiresSessionState session也无法使用(context.Session==null) 查过一些文章才发现需要在注册api路由...
public class HandleDataRequst : IHttpHandler, IRequiresSessionState { public void ProcessRequest (HttpContext context) { //context.Session[“name”] } 这里的重点是一定要实现IRequiresSessionState或者...
示例1: using System; using System.Collections.Generic;... context.Session["Test"] = "测试HttpHandler容器中调用Session"; context.Response.Write(context.Session["Test"]); } #endregion } }
如果要使用session的话,在handler的代码中添加System.Web.SessionState的引用, 并让这个handler继承IRequiresSessionState接口,一定要继承这个接口,否则会出错的。 以上本人简单总结 只有用使用到它才能感觉到...
public class YZM : IHttpHandler, System.Web.SessionState.IRequiresSessionState{ public void ProcessRequest (HttpContext context) { context.Response.ContentType = “image/JPEG”; u
public class PicHandler1 : IHttpHandler, IRequiresSessionState { private string mCheckNo = string.Empty; protected ImgBuilder _ImgBuilder = new ImgBuilder(); protected VryImgGen _ImgBuilderNew = ...
2.一般处理程序:LogoutHandler.ashx /// /// LogoutHandler 的摘要说明 /// public class LogoutHandler : IHttpHandler,IRequiresSessionState { public void ProcessRequest(HttpContext context) { ...
namespace QTJZ { public class Filters : IHttpModule, IRequiresSessionState { public void Dispose() { } public void Init(HttpApplication application) { application.AcquireRequestSt
一般处理程序:LogoutHandler.ashx 1 /// 2 /// LogoutHandler 的摘要说明 3 /// 4 public class LogoutHandler : IHttpHandler,IRequiresSessionState 5 { 6 public void ProcessRequest(Htt
定义最基本的泛型类如下: 代码如下:public abstract class GetDataBase<T> :IHttpHandler, IRequiresSessionState { protected abstract T GetModel(HttpContext context); protected abstract IList<T> GetList...
代码如下:/// /// PicHandler1 的摘要说明 /// public class PicHandler1 : IHttpHandler, IRequiresSessionState { private string mCheckNo = string.Empty; protected ImgBuilder _ImgBuilder = new ...