session赋值和访问

寂寞沙洲 2010-03-25 08:04:45
session赋值和访问
(1)代码
首先运行页面a中的代码:
Session["test"] = "ok";
Label1.Text = Session["test"].ToString();

然后运行页面b中的代码:
if (Session["test"] != null)
Response.Write(Session["test"].ToString());
else
Response.Write("no session.");
(2)运行结果:
对于360浏览器:一旦标签页a关闭,访问页面b,结果为no session;对于Firefox中

国版,先访问页面a,然后标签页a关闭,访问页面b,结果为ok,

(3)问题
1.不同的浏览器,为何结果不同?
2.关闭产生session的页面,其他页面中究竟能否访问到对应的session值了?
3.关闭浏览器,session是否失效?有的资料说不会马上失效,当超时才失效!但我对上面的例子进行了测试,不管哪种浏览器,只要关闭,再打开浏览器访问页面b,结果都为no session。
4.在asp.net时代,能否用这种方式判断用户是否登录、身份验证(在asp时代常用这种方法)?
...全文
1485 35 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT流渊 2010-03-29
  • 打赏
  • 举报
回复
up up up
day day up
good good study
only_lonely 2010-03-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuyq11 的回复:]

session有过期时间
关闭产生session的页面,其他页面能访问session
一些操作也会使session失效如删除文件夹
可使用持久性存储
string s=Session[""]==null?"":Session[""].ToString();
[/Quote]
only_lonely 2010-03-29
  • 打赏
  • 举报
回复
好帖~~~mark一下,好好看~
「已注销」 2010-03-29
  • 打赏
  • 举报
回复
加密cookie做 = =| 上个b2c的项目用session保存登录名结果推广后时间管理器那每天都是16M的对象不存在。。 后来改回cookie才好~~
echo0808 2010-03-29
  • 打赏
  • 举报
回复
支持cookie
leon9090 2010-03-29
  • 打赏
  • 举报
回复
用cookie吧,减轻Server压力
v风雪山神庙v 2010-03-29
  • 打赏
  • 举报
回复
楼主提的问题很细致,好问题
  • 打赏
  • 举报
回复
同意7楼说的,哈哈
fanxiaolin84 2010-03-29
  • 打赏
  • 举报
回复
upupupupup
heimark2 2010-03-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 amandag 的回复:]
1.不同的浏览器,为何结果不同?
==
这个问题本身就是一个典型的面试题,最近刚被问过,不同的浏览器差别很大,IE6和IE7以上差别更大

2.关闭产生session的页面,其他页面中究竟能否访问到对应的session值了?
3.关闭浏览器,session是否失效?有的资料说不会马上失效,当超时才失效!但我对上面的例子进行了测试,不管哪种浏览器,只要关闭,再打开浏览器访问页面b,结果都为……
[/Quote]
同意楼上说的.
hitlcyu19 2010-03-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuyq11 的回复:]

session有过期时间
关闭产生session的页面,其他页面能访问session
一些操作也会使session失效如删除文件夹
可使用持久性存储
string s=Session[""]==null?"":Session[""].ToString();
[/Quote]
Session是在这个会话期间保持住的 呵呵 关闭浏览器肯定会使Seesioin为no session
寂寞沙洲 2010-03-29
  • 打赏
  • 举报
回复
各位大侠:
关闭浏览器,能否再取得session的值了?我对上面的例子进行了测试,不管哪种浏览器,只要关闭,再打开浏览器访问页面b,结果都为no session。
jianke917 2010-03-26
  • 打赏
  • 举报
回复
session 有过期问题,可以自行设置session过期时间,其实最大问题是已丢失问题,为解决丢失问题可以启动StateServer服务或使用SQLServer来存储Session状态。
woaixiayutian 2010-03-26
  • 打赏
  • 举报
回复
COOKIE在所有浏览器中唯一的不同是:存储的数据大小不同
SESSION中之所以在360中关闭某个窗口会丢失,我个人分析是360用IE内核,360中每一个打开的网页,都是等于重新打开一个新IE
vip__888 2010-03-26
  • 打赏
  • 举报
回复
用cookie 不同的浏览器设置的cookie是不同的
phoeni_xin 2010-03-26
  • 打赏
  • 举报
回复
360se 浏览器的机制在于。

每个标签是一个独立的进程,a标签的异常关闭与b标签的正常与否无关。

firefox 整个只是一个进程。

任何一个标签的异常都会导致全部页面关闭。
伴老思源 2010-03-26
  • 打赏
  • 举报
回复
Session在服务器端仍存在~

只是关闭浏览器时客户端与服务器端的可信通道断了,如果你把Session存入数据库中可以持久性存储,只要服务器不重启、关机或断网,Session永不过期~
寂寞沙洲 2010-03-26
  • 打赏
  • 举报
回复
测试了ie7,先访问页面a,然后标签页a关闭,访问页面b,结果为ok!
将360浏览器升级为3.14版,先访问页面a,然后标签页a关闭,访问页面b,结果为ok!
jshi123 2010-03-26
  • 打赏
  • 举报
回复
不同浏览器对session的处理方式不同。

最新3.12版360浏览器关闭标签页a后,b显示的也是ok,同其它浏览器是一样的。

在360选项设置中,在“框架和增加”下面的“多窗口间cookie同步”下面,有同步或不同步的选项,选择不同步时,新窗口不会和原窗口共享会话状态。

在IE8的“文件”菜单下有“新建会话”菜单,点击后打开的新窗口就不会和原窗口共享会话状态。

google chrome 和 ff也都有类似的“新建会话功能”,可以实现“一台电脑上同时用两个不同身份登录网站”的功能(适合多马甲用户使用)。

IE,360,FF在关闭所有窗口后,会话也会结束,此后再打开浏览器就不会得到之前的会话状态。

所谓的“结束会话”是指浏览器会清除会话cookie,而并不会消除服务器上的HttpSessionState,而且结束会话时也不会自动通知到服务器;所以服务器端通常用超时机制来结束session





2.关闭产生session的页面,其他页面中究竟能否访问到对应的session值了?
3.关闭浏览器,session是否失效?有的资料说不会马上失效,当超时才失效!但我对上面的例子进行了测试,不管哪种浏览器,只要关闭,再打开浏览器访问页面b,结果都为no session。
4.在asp.net时代,能否用这种方式判断用户是否登录、身份验证(在asp时代常用这种方法)?
xupeihuagudulei 2010-03-26
  • 打赏
  • 举报
回复
我觉的你完全可以用cookie做。
加载更多回复(14)

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧