随笔-65  评论-1102  文章-2  trackbacks-39

今天和同事讨论Session的问题...因为最初做ASP的时候,用Session做验证,做过实验弹出窗口后Session就会消失..我也一直坚信在Session页弹出的窗口肯定Session会消失..

但是今天,和单位同事讨论后,同事要求再次验证答案是否如我所说..我也满怀信心的做实验..我的答案还是和以前一样..但是同事的机子上无论怎么弹出页面,弹出多少页面,Session始终存在..为了彻底证明,先后用了五台电脑..只有我的机子不行.其他都没问题..那肯定就是我的问题了..于是,先将IE设置为默认属性,重新启动IIS,上网查找资料.终于被我发现一篇文章,说的是Session的原理,因为Session是不能跨web应用程序的(这个我知道^_^)..说是要建立虚拟目录(为了方便我们是用ASP页面测试),于是我建立虚拟目录..访问..OK..正常..呵呵..高兴啊..终于搞定了..于是将Session的大道理给同事臭了一大堆,可是最后他们测试的发现,他们不需要建立虚拟目录也是不会消失啊..汗,再次失败..

回想刚才自己操作的步骤和同事的操作步骤,发现有一点不一样..因为我习惯用快捷键操作,所以我每次浏览IE的时候,用win+E打开我的电脑,然后在地址栏中输入地址..而同事是用IE打开后输入地址(^_^这么小的问题都被偶发现了.想不佩服自己都不行)..呵呵.于是按照同事的操作方法..OK..没问题..一切正常了..为了测试.NET是否也存在如此情况,再次做了测试..结果发现和ASP下的情况一样..我想这应该IE机制的问题吧...如果你有的解答可以一起讨论哦..

当然,如果大家能自己动手试一下..你会发现这个问题很奇怪..很有趣..做一个Seesion.aspx,里面设置一个Session["aa"] ="aa",然后在做一个连接到另外页面的,连接用_blank打开...然后直接用Win + E 快捷键,输入你刚才的实验站点..点击那个_blank连接弹出的页面中,你就会看到Session消失...如果用IE打开刚才的实验站点..则打开连接中的Session不会消失..如果是ASP测试的话建不建虚拟目录都无所谓,文件只要放在web根目录下就好了..

哈哈..大功告成...就是因为这么一个小小的区别..一个小小的习惯让偶饮恨这么多年...真是失败啊...如果你对Session有什么不同的看法可以一起讨论哦

posted on 2005-08-19 18:27 难得一蠢 阅读(3889) 评论(17)  编辑 收藏 所属分类: C#.NET思绪随说

评论:
#1楼  2005-08-19 21:48 | 王小桃 [未注册用户]
win+E启动的窗口是在explorer进程里的,新窗口则是IE的进程,而你同事始终是在IE的进程内,估计是这个;
建议再用Firefox试试看。
  回复  引用    
#2楼  2005-08-19 22:27 | FantasySoft      
Session是Server Side的东西,每个服务器对于Session的支持是不一样的,但是通常会跟浏览器的实例相关。至于你提到的弹出窗口Session就消失了,不见得是一定对的。
  回复  引用  查看    
#3楼  2005-08-20 00:50 | 爱编程的老刀      
好奇怪哦, 我也是昨天才刚刚知道, 没想今天就在这里看到这样的一篇文章.
因为我也是习惯打开我的电脑再敲网址的.
  回复  引用  查看    
#4楼  2005-08-20 02:57 | ocean [未注册用户]
一楼说得对,session是在同一进程的IE中保持一致。从我的电脑中转到IE,session会丢失。
这种问题不需要过多的试验,重要的在于理解其本质。
  回复  引用    
#5楼  2005-08-20 08:03 | yippeesoft [未注册用户]
一楼正解

我也很佩服LZ

这么明显的差别也没有看出来

资源管理器和IE
  回复  引用    
#6楼  2005-08-20 08:47 | lovebanyi [未注册用户]
同一进程的IE不会消息..只要不是同一进程.全部不行.(Cookie还行的)
session的本质是 cookie_id 来维持的.

  回复  引用    
#7楼  2005-08-20 19:41 | flyye_cs      
偶是直接在ie里开网页的,每次有window.open弹出的页面,大部分是session丢失,有时候又不丢失.... 郁闷!

还有为什么在MyIE里面window.open是弹出的ie窗口,而不是MyIE的窗口??
  回复  引用  查看    
#8楼 [楼主] 2005-08-21 07:50 | 难得一蠢      
恩,我也觉得explorer进程的关系..

To:flyye_cs

用window.open弹出的页面,丢失的原因可能是因为Session过多..因为Session是保存在当前的web应用程序中,而通常所说的关闭浏览器Session就会释放的说法是错误的..因为关闭浏览器代表着当前的SessionID消失,而与这个SessionID一起创建的其他Seesion则始终存在,除非你显示的调用Session的销毁方法..才能释放..或者当前的Session.timeout超时后才会被清除..
  回复  引用  查看    
#9楼  2005-08-22 09:20 | sunrise [未注册用户]
1843年的时候就知道了这个问题了。
  回复  引用    
#10楼 [楼主] 2005-08-23 07:38 | 难得一蠢      
To:sunrise

呵呵,你出生的比较早..是个高人哦..
  回复  引用  查看    
#11楼  2006-05-12 10:38 | ayin [未注册用户]
很明显的进程的问题啊...

不同的进程当然是无法识别另外进程的session的.

一个简单的例子就是:一个IE浏览器里的session,在傲游里,就不能用啊.

我在百度搜索到还以为是个什么奇怪的问题..原来是这个..
  回复  引用    
#12楼  2006-12-04 14:33 | oo縼箻ㄗs.鋒      
用框架会不会丢失Session呢?
  回复  引用  查看    
#13楼  2007-06-25 14:41 | wm [未注册用户]
不会
  回复  引用    
#14楼  2007-06-26 14:35 | dejack [未注册用户]
用IE直接打开也会丢失....不知道是什么原因...找不到答案啊
  回复  引用    
#15楼  2007-10-24 11:20 | eqiang8271@163.com [未注册用户]
怎么我这个没有问题???
多个浏览器都实验过了/session丢失啊
  回复  引用    
#16楼  2007-12-11 10:26 | yuanjc [未注册用户]
楼主牛人呀,我以前也遇到过同样的问题,一直不知道是为是什么,太感谢你了。把你的博客收藏了,呵呵
  回复  引用    
#17楼  2008-01-24 11:28 | 巴拉巴拉      
我在IE中内嵌了一个ActiveX控件,在控件中执行某条语句就会使Session的数据丢失,有没有人遇到过这个问题?
  回复  引用  查看    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2005-08-19 18:29 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: