我确定如果没有存储任何值,会话ID会不断变化。
但似乎2010年有例外: here is the demo vid
新页面(空项目):
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Session.SessionID);
}
奇怪但是在回发/刷新/ ctrl + f5之后:我得到了相同的号码......但是不应该那样....(从那以后我没有存储任何东西)
我错过了什么?
P.S。 Session.Count = 0 .....
我只是在 vs2005 中运行相同的代码,每次都会有一个新的会话ID !!!!
答案 0 :(得分:2)
应该是那样的。
Session是一个特殊的ASP.NET运行时对象,在确定的时间内存在于所有请求/响应中。它的设计保持不变,无论是页面加载还是回发。
会话终止,然后达到超时时间。您可以控制要使会话保持活动的确切超时:
您还可以控制请求之间持久会话的位置。
http://msdn.microsoft.com/en-us/library/z1hkazw7.aspx
在内存状态管理中简化了一个,它只是将Session对象保存在RAM中。因此,如果app-pool被回收,所有数据都将消失。更多生产就绪方案包括SQL状态管理。
修改强> 我只是假设,然后你在VS2005上运行,你运行旧版本的ASP.NET Web开发服务器(Cassini),确实我的工作方式是在每个新请求中都有Session,如果还没有存储在Session中的话。 / p>