none
session 问题 RRS feed

  • 问题

  • 看到一些程序在pageload时
    if(session["test"]!=null)
    {
        string abc=Session["test"].ToString();
        session["test"]=abc;
    }
    意思是防止session过时,问一下有这个必要么?
    postback时,服务器能自动更新session过期时间么?
    一般的pageload,如果不是postback,服务器应该不会更新session过期时间?这样,即使你不停刷新,20分钟后,session还是会过期?
    2010年2月13日 8:29

答案

  • session根据Web.config的设置,存储在服务器的3个地方,tmp文件夹、内存、SQLserver  默认设置为,由IIS维护的存储在tmp文件夹, 每一个session通过一个guid进行检索,而这个guid根据web.config一般存储在用户浏览器的cookie或URL中,当客户端发出一个GET请求,iis便会通过客户端cookie或URL中的GUID去检索session,如果超时,session便会被删除,同时创建一个新的session并在客户端存储新session的GUID ,如果没有超时,session的时间便会清零。。

    session 大致就是这样一种技术 。。。

    所以,只要客户端不停的刷新,session便会始终有效 。。pageload 中重新赋值是没有意义的。。。 如果你不发出GET请求pageload 也不会被执行,session的时间也不会清零。postback是有效的,只要是同一个客户端发出get请求都是有效的。
    • 已标记为答案 ogra 2010年2月16日 5:57
    2010年2月13日 15:00
  • 你好,

    刷新就是一种请求,无论你是get还是post,都可以看成一种请求。如果你不停的刷新,session肯定会一直存在的。


    Microsoft Online Community Support
    • 已标记为答案 ogra 2010年2月16日 5:57
    2010年2月15日 1:57

全部回复

  • session根据Web.config的设置,存储在服务器的3个地方,tmp文件夹、内存、SQLserver  默认设置为,由IIS维护的存储在tmp文件夹, 每一个session通过一个guid进行检索,而这个guid根据web.config一般存储在用户浏览器的cookie或URL中,当客户端发出一个GET请求,iis便会通过客户端cookie或URL中的GUID去检索session,如果超时,session便会被删除,同时创建一个新的session并在客户端存储新session的GUID ,如果没有超时,session的时间便会清零。。

    session 大致就是这样一种技术 。。。

    所以,只要客户端不停的刷新,session便会始终有效 。。pageload 中重新赋值是没有意义的。。。 如果你不发出GET请求pageload 也不会被执行,session的时间也不会清零。postback是有效的,只要是同一个客户端发出get请求都是有效的。
    • 已标记为答案 ogra 2010年2月16日 5:57
    2010年2月13日 15:00
  • 如果没有get呢?这样一直刷新,session会不会过期?还是只要在页面创建了session,刷新的时候便自动发出get?

    2010年2月15日 1:04
  • 你好,

    刷新就是一种请求,无论你是get还是post,都可以看成一种请求。如果你不停的刷新,session肯定会一直存在的。


    Microsoft Online Community Support
    • 已标记为答案 ogra 2010年2月16日 5:57
    2010年2月15日 1:57