Sessionid的变与不变,.net的意图是什么?

qingYun1029 2012-05-11 05:23:03
首先得承认这是一个蛋痛的标题,只为吸引眼球。。。

不好意思了。。。

代码非常简单,如下

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

protected void Button1_Click(object sender, EventArgs e)
{
Session["userName"] = "qingyun1029";
}


前台就一个button按钮,当页面加载完成后,我尝试着做如下事情。

1、不停的刷新页面。

2、不停的点击button。

然后会发现做第一件时间的时候,sessionid不停的改变,做第二件事情的时候sessionid停止了改变,这是为什么呢???

...全文
288 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
偷钻石的小子 2012-05-12
  • 打赏
  • 举报
回复
sessionid是储存在cookie里面
qingYun1029 2012-05-12
  • 打赏
  • 举报
回复
呵呵,谢谢大家啊!!!
dalmeeme 2012-05-11
  • 打赏
  • 举报
回复
SP1234真是搞笑~~

楼主自己都说了,是他误把cookie禁用了。
dalmeeme 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

引用 3 楼 的回复:

1和2,我试了下,SessionID都不变。

.net4.0 以后才会如此。之前的asp.net处理机制就如#2楼所说。
[/Quote]
什么.net4.0啊,我用的是就是asp.net2.0啊。我电脑上根本没装4.0。楼主在8楼的回复你没看到?
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

1和2,我试了下,SessionID都不变。
[/Quote]
.net4.0 以后才会如此。之前的asp.net处理机制就如#2楼所说。
孟子E章 2012-05-11
  • 打赏
  • 举报
回复
原因是这样的
Session对象如果没有存储数据,是不会在服务器端保存的,也就是说每次都会是一个新的值,只有使用了Session对象,才进行保存

MSDN:

使用基于 Cookie 的会话状态时,只有使用 Session 对象后,ASP.NET 才能分配会话数据存储。 因此,在访问会话对象之前,会为每个页请求生成一个新的会话 ID。 如果您的应用程序要求整个会话使用一个静态会话 ID,则可以实现应用程序的 Global.asax 文件中的 Session_Start 方法,并将数据存储在 Session 对象中以修复会话 ID,或者可以在应用程序的其他部分使用代码将数据显式存储在 Session 对象中。
qingYun1029 2012-05-11
  • 打赏
  • 举报
回复
是我操作失误了,我把firefox禁用cookie了,所以无法保持sessionid。。。
dalmeeme 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

你的项目中也没有包含global文件吧,你简单的新建一个项目,然后复制LZ代码,看看效果。因为在客户端请求服务器的时候如果没有使用session,每次sessionid都不同
[/Quote]
不是跟你说了嘛,我不会连这点都不懂。代码就是赋值LZ的。
licai1210 2012-05-11
  • 打赏
  • 举报
回复
你的项目中也没有包含global文件吧,你简单的新建一个项目,然后复制LZ代码,看看效果。因为在客户端请求服务器的时候如果没有使用session,每次sessionid都不同
dalmeeme 2012-05-11
  • 打赏
  • 举报
回复
1和2都试了,Global文件里没写东西,试下来不会变,我在ie8和火狐下都试了。

licai1210 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

1和2,我试了下,SessionID都不变。
[/Quote]
你试的时候点击了Button1按钮才会不变的吧,如果没有点击Button1并且在gloal.ashx文件里面没有用session_start的话,sessionid会不断变化的
dalmeeme 2012-05-11
  • 打赏
  • 举报
回复
1和2,我试了下,SessionID都不变。
licai1210 2012-05-11
  • 打赏
  • 举报
回复
你开始不停的刷新的时候压根就没用去用session,所以服务器认为这个会话来源不同的用户,当你使用了session的时候,服务器会向客户端发送一个sessionid作为标识,不信你可以到客户端看看,在没用session的时候,cookies中是不存在sessionid的.......
qingYun1029 2012-05-11
  • 打赏
  • 举报
回复
tmd,刚刚还是404,害我又发了一个相同的帖子。。。

强烈建议返回我分数。。。

62,268

社区成员

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

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

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

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