会话基础知识这里讲的很详细
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也有效(但服务器端可能因为服务器重启等失效)

解决方案 »

  1.   

    1.  forms 验证中,我设置了 cookie.Expires=DateTime.Now.AddMinutes(1),身份验证票为10min,登录後查看Request.Cookies[FormsAuthentication .FormsCookieName].Expires还为0001-1-1 0:00:00,这又是为什么呢??2.  如果不设置cookie.Expires,那么身份验证cookie的有效期 就等于 身份验证票的有效期,对吗?
      

  2.   

    4. 当我session中没有存储信息时 ,每当我刷新一次,SessionID就变一次,而当我session存储了信息时,再刷新,sessionID却不再变化了,这又是为什么呢???===========恭喜 LZ ,你发现新第八大陆了 :)不过,这是一个已知的问题!默认设置中 SessionID 由 ASP.NET 内部【自动随机生成】
    (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.
      

  3.   

    对了, 
    asp.net 2.0 你通过 Relecator 反射 System.Web.SessionState.SessionIDManager.CreateSessionID 方法获取其内部默认实现算法
      

  4.   

    看MSDN的专门文章,这里几句话很难说清楚