HttpContext.Current.Session.SessionID相关问题及备忘

今天Tony提到说我们系统中会利用如下代码来判断用户是否过期。

if (string.IsNullOrEmpty(UserContext.ConnectionSessionId))
{
       LogUIFactory.Current.Debug(HEARTBEAT_DISCONNECTION_LOG_2);
       timeout = true;
}

但是我做实验发现,在page load的时候,打印出来的sessionid是一直在变化的:

 protected void Page_Load(object sender, EventArgs e)
{
     Response.Write(HttpContext.Current.Session.SessionID);
}

上面这代码很好解释,因为http连接是无状态的,所以每次请求过来,sessionid会变化,不足为怪。

但是如果稍微加点料,就不一样了:

protected void Page_Load(object sender, EventArgs e)
{
    Session["tst"] = "222";
    Response.Write(HttpContext.Current.Session.SessionID);
}

上面打印出来的sessionid是一直不会再变化的。

看来如果赋值了之后,session实例会被创建,然后其id就被固定下来了。

session这东西几年前在用,最近几年写程序,一直在用cookie,都差点忘记了session这点了。今天看到老系统用的仍然是这个,并且发现了其中的这点,感觉收获还挺大的,至少可以再解决框架中的一个技术难点。

时间: 2024-08-25 11:32:20

HttpContext.Current.Session.SessionID相关问题及备忘的相关文章

HttpContext.Current.Session 和 Session 的区别

Session(会话)通常指一个动作从开始到结束不间断的一个动作. 例如“打电话”,通常是“1.拿起电话--2.拨对方号码--3.对方截图--4.挂机”.这四个步骤从完成到结束组成了一个基本的Session,中间任何一步断裂,都会导致Session的失效. 而在浏览器里,Session主要通过连接传递,“打开购物--点击连接选择物品--添加到购物车--结账”组成了一个Session,在不使用Cookie的情况下,中间任何一步断裂都会Session失效. 所有,你用浏览器打开2个页面,在一个页面里

HttpContext.Current.Session[strName]未将对象引用设置到对象的实例

项目开发是在4.5.1上,不知道为啥客户提供的服务器上安装的是4.5,差别不大也没去升级,然后部署MVC的时候web.config报错 <system.web> <compilation debug="true" targetFramework="4.5.1"/> <httpRuntime targetFramework="4.5.1"/> </system.web> 然后也没在意就把这段给删掉了,

System.Web.HttpContext.Current.Session为NULL值的问题?

自定义 HTTP 处理程序,从IHttpHandler继承,在写System.Web.HttpContext.Current.Session["Value"]的时 候,没有问题,但想将这个Session写到某个变量时或判断是否为空时 如:HttpContext.Current.Session["Value"]==null,发现Session的值为NULL,后来查MSDN,看到 “在自定义 HTTP 处理程序中实现 IRequiresSessionState 接口,以

ashx中应用HttpContext.Current.Session ,呈现未将对象引用设置到实例上

在ASHX一般处理程序文件中如需调用Session必须继承System.Web.SessionState.IRequiresSessionState接口,才能实现Session读写! System.Web.SessionState的接口介绍: IReadOnlySessionState 指定目标 HTTP 处理程序只需要具有对会话状态值的读访问权限.这是一个标记接口,没有任何方法. IRequiresSessionState 指定目标 HTTP 处理程序需要对会话状态值具有读写访问权.这是一个标

System.Web.HttpContext.Current.Session获取值出错

在自定义类库CS文件里使用System.Web.HttpContext.Current.Session获取Session时提示错误:未将对象引用设置到对象的实例. 一般情况下通过这种方式获取Session值不会有问题,不过应特别注意要使用session必须要page_load方法执行以建立了page对象以后才有session的使用目标,此时先检测Session是否为Null再调用值是不会提示错误的. 如果直接在Page页面中定义一个全局变量取Session的值就会提示未设置实例的错误!使用App

2014-08-26 解决HttpContext.Current.Session在ashx文件中出现“未将对象引用设置到对象的实例”的问题

今天是在吾索实习的第35天. 最近在使用HttpContext.Current.Session来获取Session["..."]的值时,常常会弹出错误——“未将对象引用设置到对象的实例”. 所以,在网上搜索了一番,发现如下解决方法: 引用:using System.Web.SessionState; 让要用到HttpContext.Current.Session的继承IReadOnlySessionState.如:public class {ClassName}: IHttpHandl

linux 相关代码路径备忘。

https://github.com/torvalds/linux/blob/master/net/core/dev.c?utf8=%E2%9C%93#L7736昨天 11:35 https://github.com/torvalds/linux/blob/master/net/core/sock.c?utf8=?#L56110:27 https://github.com/torvalds/linux/blob/master/net/core/dst.c?utf8=%E2%9C%93#L1541

css相关 细节 优化 备忘

<p>标签不能再包含<p>,也不能包含<div>,<div>可以包含<p> a 和 img 标签是特殊的行内元素,a标签可以包含div等,几乎所有的可替换元素都是行内元素,例如<img>.<input>等等,替换元素一般有内在尺寸,所以具有width和height,可以设定.例如你不指定img的width和height时,就按其内在尺寸显示,也就是图片被保存的时候的宽度和高度. 对于表单元素,浏览器也有默认的样式,包括宽度

OpenCV相关基础操作备忘

1.循环读取N张图片进行处理 int i= 1; while (i<= 10) { string imageName = format("%d.jpg", i); image = imread(imageName, IMREAD_GRAYSCALE); namedWindow("Gray_image", CV_WINDOW_AUTOSIZE); imshow("Gray_image", I); i++; while (1){ if (wai