最近在做一个页面.这个页面(pp.aspx)呢是做为一种考试卷子来用的,所以用户呢可能需要写很多东西上去,但是呢,我的session过期时间是20分钟(默认的那种),这个页面呢加载了一个pagehear的用户控件,每次session过期呢,就会调用到pagehear这个用户控件的pageload里面的一个函数,用来跳会登陆页面. 
                  本来呢,想做一个js固定时间来保存一下这个卷子,但是用户说闪啊闪的他难受,后来呢我又想设置session的过期时间,但是怎么设置也没成功,时间设置超过20分钟就无效.当然我主要是想完成这样的效果,就是,只是单独这个页面的session过期时间长一些,而其他页面还是和原来一样. 
                  我自己给pagehear,写2个属性,一个是设置过期时间,一个是把session("UID")即用户登陆名保存起来.这2个属性呢,我都是通过pp.aspx这个页面pageload事件来给他们赋的值.然后呢我在pagehear的pageload中实现隐藏登陆.效果是实现了! 
                  但是我想请教各位高手,应该有比较厉害的方法来实现这样的效果吧,比如,我就单独设置这个页面的Session过期时间长一些!可以吗?

解决方案 »

  1.   

        Session过期是因为你20分钟没有给服务器发送任何请求,这样到20分钟后服务器就会将客户端的Session销毁,因此你只有想服务器发送请求就能保证Session不过期了。可以考虑使用Ajax,让那个页面每10分钟发送一次发送一次XmlHttpRequest请求。
        另外,如果你想保存当前页面的信息也可以使用Ajax,这样页面就不会一直闪了。
      

  2.   

    试试
    在 Web.config 文件中的 sessionstate 模式设置为InProc
    timeout设置超时时间
    <sessionState mode="InProc" timeout="30"></sessionState>