不知道是不是Session.Timeout的一个BUG

问题描述

大家随便建个网站项目,然后随便建个aspx页面.然后在页面中放入以下代码:protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){Session.Timeout=60;}}

然后在页面上放个Button控件:<asp:ButtonID="Button1"runat="server"Text="Button"/>然后对页面进行调试,监控Session.Timeout的值。1,当页面第一次执行的时候Session.Timeout的值由Web.config中配置的默认sessiontimeout值20变为了60,这没有任何问题。2,但是当你点击页面上的Button按钮进行页面回发后,Session.Timeout又变回了Web.config中配置的值20。但是当你在项目中加入Global.asax后,再重复上面的步骤1和2,你会发现步骤2中Session.Timeout的值就保持为60了。经过测试发现是只要Global.asax中有voidSession_Start(objectsender,EventArgse)函数(函数体什么都没有都可以)步骤2中Session.Timeout的值就是60,如果Global.asax中没有voidSession_Start(objectsender,EventArgse)函数步骤2中Session.Timeout的值就是20。按道理来说步骤2的步骤2中Session.Timeout的值应该是60,因为Session的数据是存储在服务器端的,只要用户的Session不过期,那么该用户的Session.Timeout值应该始终为在页面上更改后的值60.出现这样的奇怪问题不知道算不算ASP.NET的一个BUG。经测试上述问题在VS2010即.Net4.0下还是存在。

解决方案

解决方案二:

2个不同的session当然有不同的值啊,每一次请求服务器都会判断客户端有没有返回session的标识,如果有就不再创建,如果没有就创建,然而,你在每一次访问页面的时候并没有对session操作,你可以用firebug监控下客户端的session标识
解决方案三:

引用楼主busydonkey的回复:

大家随便建个网站项目,然后随便建个aspx页面.然后在页面中放入以下代码:C#codeprotectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){Session.Timeout=60;//可以在这里加一个session["userName"]="随便",那样效果就出来了}

解决方案四:

引用2楼licai1210的回复:

引用楼主busydonkey的回复:大家随便建个网站项目,然后随便建个aspx页面.然后在页面中放入以下代码:C#codeprotectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){Session.Timeout=60;//可以在这里加一个session[……

不是Session值,是针对Session.Timeout这个属性有我说的问这个题,只要在Global.asax中有voidSession_Start(objectsender,EventArgse)这个函数Session.Timeout的值在页面回发后才不会变。这个很奇怪的
解决方案五:

该回复于2012-03-16 11:10:38被版主删除
解决方案六:

解决方案七:

每次加载都会获取webconfig的设置,你写在Global是不是就好了呢
解决方案八:

引用3楼busydonkey的回复:

引用2楼licai1210的回复:引用楼主busydonkey的回复:大家随便建个网站项目,然后随便建个aspx页面.然后在页面中放入以下代码:C#codeprotectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){Session.Timeout……

回发后就不是同一个会话了呗
解决方案九:

用了session_start代表你的会话使用了session所以服务器会认为是同一个会话,既然是同一个会话属性的值当然不会改变
解决方案十:

引用8楼licai1210的回复:

用了session_start代表你的会话使用了session所以服务器会认为是同一个会话,既然是同一个会话属性的值当然不会改变

是不是同一个会话不是由session_start函数来决定的吧。并且上面我写了session_start的函数体为空都可以,即什么多不做Session.Timeout的值都会为60。难道将Global.asax中的session_start函数删掉,下次过来的Request就不是同一个session了吗?并且在调试的时候你会发现在点击Button让页面回发的时候session_start函数根本就没被执行的。
解决方案十一:

引用7楼ltcszk的回复:

引用3楼busydonkey的回复:引用2楼licai1210的回复:引用楼主busydonkey的回复:大家随便建个网站项目,然后随便建个aspx页面.然后在页面中放入以下代码:C#codeprotectedvoidPage_Load(objectsender,EventArgse){if(!IsPost……

这不对啊。。。是不是同一个会话不应该是有回发决定啊。。。应该是要不你把浏览器管了重新打开,要不回发的时间间隔超过了Session.Timeout,可上面的实验中我是立即点击Button按钮回发,很明显没有超过Session.Timeout的时间。
解决方案十二:

引用9楼busydonkey的回复:

引用8楼licai1210的回复:用了session_start代表你的会话使用了session所以服务器会认为是同一个会话,既然是同一个会话属性的值当然不会改变是不是同一个会话不是由session_start函数来决定的吧。并且上面我写了session_start的函数体为空都可以,即什么多不做Session.Timeout的值都会为60。难道将Global.asax……

去掉了session_start又在页面没使用session,当然请求是新的
解决方案十三:

引用11楼licai1210的回复:

引用9楼busydonkey的回复:引用8楼licai1210的回复:用了session_start代表你的会话使用了session所以服务器会认为是同一个会话,既然是同一个会话属性的值当然不会改变是不是同一个会话不是由session_start函数来决定的吧。并且上面我写了session_start的函数体为空都可以,即什么多不做Session.Timeo……

额。。。我个人还是认为请求是不是用的新的Session和Global.asax中有没有定义session_start函数无关。

时间: 2024-10-23 14:40:07

不知道是不是Session.Timeout的一个BUG的相关文章

Science上发表的聚类算法,C++编程实现,有一个bug不知道怎么解决!!跪求大神!!!

问题描述 Science上发表的聚类算法,C++编程实现,有一个bug不知道怎么解决!!跪求大神!!! include<iostream> include<fstream>using namespace std; typedef struct sourcedata //声明了一个原始数据结构体 { int m; //矩阵的行rows int n; //矩阵的列columns double **data; //保存数据的二维指针 }SourceData; SourceData get

BugZilla之外的选择——另一个 Bug 跟踪管理系统 Mantis 在 IIS5 下安装指南

最开始想找一个 Bug 跟踪管理系统时,是想用 BugZilla 的,但是在实际安装使用时发现在 Windows 下安装非常费劲,需要自己改动 n 多的地方才能获得一个可以在Windows下使用的 Hack 版本,而且邮件设置怎么都没有成功,最后只好放弃.  在网上查找BugZilla相关资料的时候发现了 Mantis,这也是一个开源的 Bug 跟踪管理系统,基于 PHP+MySQL,支持 Windows:相对于BugZilla,比较轻量级,不过对于我们的开发团队来说是完全够用了,所以我在放弃了

Win10系统菜单打不开问题的解决,难道是Win10的一个Bug ?

     Win10左下角菜单打不开,好痛苦,点击右下角的时间也没反应,各种不爽,折磨了我好几天,重装又不忍心,实在费劲,一堆开发环境要安装,上网找了很多方法都不适用.今天偶然解决了,仔细想了下,难道是Win10的一个Bug? 1.问题和现象             右下角菜单点不开,下面的状态栏的右键也没有反应.时间日期也点不开,音频喇叭同样点不开....各种烦人,百度一堆都无果.... 说明:Win10是正式版,已激活:杀毒也全盘扫描过,因为电脑是开发和办公用,几乎不上其他网站,所以中毒的可

Chrome浏览器的一个Bug将令试图匿名访问网站的用户泄漏自己的真实身份

最近研发人员警告用户称谷歌Chrome浏览器中的一个Bug将令试图匿名访问网站的用户泄漏自己的真实身份.由于这个Bug的存在,Chrome浏览器 在配置为使用第三方代理服务器时,仍然会使用本地网络进行域名查询动作.而一般人们使用第三方代理服务器的目的便是防止在浏览某个网页时暴露本机的IP地址. 在正常情况下,将浏览器配置为使用第三方代理服务器之后,应当由第三方代理服务器来负责进行域名查询工作.据安全电子邮件列表服务"Full Disclosure"周一披露:"这表示那些想在C

!important在ie6下的一个BUG和CSS的优先级。

在没有DTD的声明的情况下,在同一个选择器样式(即同一个大括号里面)下,IE6,IE7,IE8对!important的解析都是无效的. 一 css的优先级 今天有人跟我说css hack中用!important来区分ie6,因为ie6不支持!important,是的在很早以前我也是用过这种方法写hack,但是后来就基本不用了.本来我对他谁的ie6不支持!important也没什么异议,可是正好在前几天正好用个这个!important属性解决了一个样式优先级的问题,而且是支持ie6的,这是为什么呢

mysql数据库UPDATE语句一个bug分析

这个我认为的bug,反馈给MySQL官方,但是MySQL官方认为这并不是一个bug,并给出了解释,我认为这个解释是合理的,但是不可避免的是这条语句实在太危险了. 问题描述 示例表结构与表数据: # 表结构 mysql> show create table t; +-------+--------------------------------------------------------------------------------------------------------------

与MySQL的注释、Query_cache有关的一个bug

今天有同学问了一个关于注释的问题,顺藤摸瓜发现一个bug,简要说明下. 有关注释的一些QA Q: MySQL注释有哪些格式 A:MySQL的注释格式有三种,分别是 /**/ -- 和 #.具体参见手册          Q:在一些导出文件中见过/*! xxx*/,是不是注释? A:  需要注意的是/*! */ 这种格式,对于MySQL来说不是注释,是能够直接执行的.同时这个格式还支持指定版本号,比如/*!50518 xxxx*/ 表示,若server端版本大于5518,则后续的xxxx作为语句的

【SQL 学习】表连接--natural join 的一个bug

自然连接(NATURAL JOIN)是一种特殊的等价连接,它将表中具有相同名称的列自动进行记录匹配.自然连接不必指定任何同等连接条件.这篇文章讲的一个关于natural join 的bug!(由 dingjun123 提示!) SQL> conn store/yang 已连接. SQL> create table a as select * from all_objects; 表已创建. SQL> set timing on SQL> create table b as selec

关于MySQL count(distinct) 逻辑的另一个bug

背景          上一篇博文(链接)介绍了count distinct的一个bug.解决完以后发现客户的SQL语句仍然返回错误结果(0), 再查原因,发现了另外一个bug.也就是说,这个SQL语句触发了两个bug -_-   这里只说第二个,将问题简化后复现如下,影响已知的所有版本 .   drop table if exists tb; set tmp_table_size=1024; create table tb(id int auto_increment primary key,