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

在IHttpHandler 使用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{}

继续追踪:

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

  IRequiresSessionState

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

  作用:

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

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

切记切记!!!

时间: 2024-10-16 23:23:07

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

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

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

解决在XXXXService中访问session、request、params、servletcontext等等问题

在最近的开发过程中,遇到了在service中访问session.request.params等对象中的一些内容,解决方法如下 import org.codehaus.groovy.grails.web.util.WebUtilsimport org.springframework.web.context.request.RequestContextHolder class WebUtilTools {    def static getRequest(){        def webUtils

ASP.NET ASHX中访问Session

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

ashx文件中使用session提示“未将对象引用设置到对象的实例”

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data;using System.Web.SessionState;namespace friends {    /// <summary>    /// Handler 的摘要说明    /// </summary>    public class Handler : IHttpHandler

如何在.ashx文件中使用Session對象

在一般事务处理页面(即.ashx文件)中,想要使用 Request,Response很简单,但是要想使用Session对象就会报错:“未将对象引用设置到对象的实例”或者英文“Object reference not set to an instance of an object.” 那要如何才能使用Session对象呢? 需要执行2步: 1.引入命名空间: using System.Web.SessionState; 2.使用Session的类要显式实现IRequiresSessionState

如何在WebSocket类中访问Session

我最近正在做一个基于websocket的webQQ,最后代码会开源带github上,所以过程中我就不贴所有的代码啦~就贴问题的关键. 首先先搞清一个流程:WebSocket在建立连接时第一步其实是以HTTP协议的面目进行握手的: 1.客户端发送websocket请求,此时发送的还是http包. 2.如果服务器支持websocket,那么就将http转变为websocket. 3.此时连接建立,服务器和客户端可以双向实时进行通信. 那么我们该怎么拿到HttpSession呢?观察上面整个过程发现只

解决在.ashx文件中判断Session 总是NULL的方法

实现IHttpHandler接口的同时必须继承IRequiresSessionState接口,才能拿到session public class HttpHandler: IHttpHandler, IRequiresSessionState { public void ProcessRequest(HttpContext context) { string session=context.Session["NAME"].ToString(); }

ASP.NET Global Application_Error事件中访问Session报错 解决

报错信息:会话状态在此上下文中不可用 protected void Application_Error(object sender, EventArgs e) { //以此判断是否可用Session bool HadInitSession = (sender as HttpApplication).Context.Session == null ? false : true; // ....... }

SpringMVC - controller中获取session

平时使用springMVC 在方法中访问session中经常很自然地调用Servlet API. 用起来非常直观方便,一直没有多考虑什么. 比如这样: @RequestMapping(value = "/logout") public String logout(HttpSession session) { session.removeAttribute("user"); return "/login"; } 但毕竟这样对Servlet API产