HttpHandler和ashx要实现IRequiresSessionState接口才能访问Session信息(转载)

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

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

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

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

System.Web.HttpContext.Current.Session为null

为什么得到的Session会是空呢?想了好久也没想通。找了好久,才找到了高人的指点,问题得到了解决。

解决方法:

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

public class WatermarkHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{
    //WatermarkHandler 中的代码
}

继续追踪:

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

  IRequiresSessionState

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

  作用:

  在自定义 HTTP 处理程序中实现 IRequiresSessionState 接口,以确定处理程序是否需要对会话状态值具有读写访问权

    

所以记得哦,如果在自定义HTTP处理程序中,要访问Session,记得一定要实现这个接口哦。

时间: 2024-10-11 02:00:49

HttpHandler和ashx要实现IRequiresSessionState接口才能访问Session信息(转载)的相关文章

IRequiresSessionState接口控制

刚刚接触.net web端的朋友都会被Session坑过,莫名其妙的不能读取Session数据,后来知道原来有IRequiresSessionState这个接口,不继承的就不能读取Session里面的数据,知道这个以后呢,也不清楚里面具体是如何实现的.对此一直不甘心,于是查了各方面的资料终于模拟出来了. 在一般处理程序(ashx文件)里面有个一个(HttpContext Context),F12进入HttpContext 类你面你会发现它应该是用了单例的模式,里面有个 public static

ASP.NET ASHX中访问Session

默认,在ashx文件中无法使用Session,直接获取context.Session只能取得null. 解决办法: 添加命名空间 using System.Web.SessionState 的引用 让这个General Handler类实现IRequiresSessionState接口 然后再用context.Session或HttpContext.Current.Session就能获取Session

在一般处理文件中访问Session需要添加IRequiresSessionState

在IHttpHandler 使用Session 通常我们经常,通过session判定用户是否登录.还有一些临时的.重要的数据也尝尝存放在Session中. 在页面我们很容易的得到Session的值,但在类中就会遇到一些问题.也知道通过下面的方法得到. System.Web.HttpContext.Current.Session["userinfo"]; 但是今天此种方法也失灵了.在做一个小应用时,需要实现IHttpHandler,同时也需要用到用户的标识.但是在这个类中怎么也不能找到S

在一般处理文件中访问Session需要添加IRequiresSessionState(转载)

原文:http://blog.csdn.net/cdsnaspnet/article/details/5695625s 通常我们经常,通过session判定用户是否登录.还有一些临时的.重要的数据也尝尝存放在Session中. 在页面我们很容易的得到Session的值,但在类中就会遇到一些问题.也知道通过下面的方法得到. System.Web.HttpContext.Current.Session["userinfo"]; 但是今天此种方法也失灵了.在做一个小应用时,需要实现IHttp

磁盘必须经过初始化,逻辑磁盘管理器才能访问——笔记本硬盘作为移动硬盘使用时遇到的问题

1. 问题描述 把笔记本电脑的硬盘拆出来,套上一个网上买的移动硬盘盒,就是一个移动硬盘了. 我的新的"移动硬盘"在接上别的电脑的时候,无法被识别,如下图. 显示:磁盘需要经过初始化,逻辑磁盘管理器才能访问. 硬盘中原本有数据,不能直接初始化. 2. 原因 我的情况是,之前在笔记本上的BIOS设置中,设置了HDD USER PASSWORD. 这就造成了这个硬盘不能被其他电脑访问. 在此之前,一直以为BIOS设置只是存在于主板上呢,而不会实际修改硬盘数据,确实误解. 3. 解决 把硬盘装

Hibernate常用的接口和类---Session接口☆☆☆☆☆

一.特点 Session是在Hibernate中使用最频繁的接口.也被称之为持久化管理器.它提供了和持久化有关的操作,比如添加.修改.删除.加载和查询实体对象 Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心 Session是线程不安全的 所有持久化对象必须在 session 的管理下才可以进行持久化操作 Session 对象有一个一级缓存,显式执行 flush 之前,所有的持久化操作的数据都缓存在 session 对象处 持久化类与 Sessi

使用Sina接口获取地址位置信息

<script type="text/javascript" src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js" charset="gb2312"></script> <script type="text/javascript">     var ss = remote_ip_info['country'] +

IIS7.5 限制几个ip才能访问网站下面某个文件夹

Iis限制几个ip才能访问网站下面某个文件夹 安装iis7的角色功能 ipv4地址和域限制,         选中要限制的文件夹 ,然后选择ipv4地址和域限制,选择 右边的编辑功能设置,选择默认拒绝,然后自行添加需要允许的ip地址.  测试,这个功能是实时生效的.

EasyUI - 使用一般处理程序 HttpHandler (.ashx)

以easyui中的panel中,使用url加载数据为列. 效果: html代码: <div id="p" style="padding: 10px;"> <p>panel content.</p> <p>panel content.</p> </div> js代码: url的路径一定要是物理路径:例如: ../Josn/abc.ashx   前面要加上  ../ $(function () {