会话基础知识这里讲的很详细
http://msdn2.microsoft.com/zh-cn/library/ms178194(VS.80).aspx
http://msdn2.microsoft.com/zh-cn/library/87069683(VS.80).aspx
如果不设置Cookie 的Expires属性,则默认返回0 ,也就是0001-1-1 0:00:00Session是靠传递到客户端的 sessionID这个cookie值进行维护的,因此,只要sessionID有效,则Session也有效(但服务器端可能因为服务器重启等失效)
http://msdn2.microsoft.com/zh-cn/library/ms178194(VS.80).aspx
http://msdn2.microsoft.com/zh-cn/library/87069683(VS.80).aspx
如果不设置Cookie 的Expires属性,则默认返回0 ,也就是0001-1-1 0:00:00Session是靠传递到客户端的 sessionID这个cookie值进行维护的,因此,只要sessionID有效,则Session也有效(但服务器端可能因为服务器重启等失效)
(asp.net 2.0 可以通过扩展 System.Web.SessionState.SessionIDManager 类来实现自己的 SessionID 生成器)
以下从 forums.asp.net 某个帖子获知,忘了 url 了 ...默认实现中,
1.
假如某次请求 SessionID 是重新生成(通过Session.NewSession 属性判断),即此前 Session 已经过期或者是第一个访问,2.
并且此次请求,你没有对 Session 做任何的操作(读或者写),那么完成此前请求之后, ASP.NET 会销毁此次 Session, 3.
下一次请求又是开始新的会话了,相当于此前 Session 的过期了(其实是asp.net主动销毁了)4.
此策略的设计是合理的,难道不是吗?既然是新Session,又没有操作Session,自然没有必要为你保留此Session可以节省资源5.
由于上面的策略设计,SessionID 并不保证是唯一的,被销毁Session 的 SessionID 仍然可能被使用到具体实现算法,未知,
Hope helpful.
asp.net 2.0 你通过 Relecator 反射 System.Web.SessionState.SessionIDManager.CreateSessionID 方法获取其内部默认实现算法