webconfig.xml:   
      <sessionState     
                          mode="InProc"   
                          stateConnectionString="tcpip=127.0.0.1:42424"   
                          sqlConnectionString="data   source=127.0.0.1;Trusted_Connection=yes"   
                          cookieless="false"     
                          timeout="20"     
          />
在这里只能设置一个时间。不能满足我的要求。有的朋友说用定时刷新页面的方法,我觉得这样加大了服务器的负担。请问有没有较好的方法?

解决方案 »

  1.   

    把SESSION 的out 时间设置的长一点 
      

  2.   

    session好像无法达到这样的要求吧!
      

  3.   

    保持Session的方法:有人说设session.timeout=-1,或小于0的数。这种方法肯定是不行的,session计算时间以分钟为单位,必须是大于等于1的整数。又有人说设session.timeout=99999。这种同样不行,session有最大时间限制。我经过测试发现最大值为24小时,也就是说你最大可以session.timeout=1440,1441都是不可以有,呵呵。本人测试环境:win2003+IIS6.0+ASP3.0。     所以想通过设session.timeout的过期时间让session永不过期是不可能的。写到Cookies里是比较好的方法,网上也有很多这样的教程,这里就不再说了!还有就是用在要保持session的页里设隐藏iframe每隔一段时间(这个时间小于session.timeout的时间)把涮新一次frame里的空页面!实现方法如下:      在要保持session页里加上:
    <iframe width=0 height=0 src="SessionKeeper.asp">
    </iframe>       同目录下建一下SessionKeeper.asp的文件。
    <html>
    <head>
      <meta http-equiv="Refresh" content="900000;url=sessionKeeper.asp"> 
      <!--每隔900秒刷新一下自己,为了和服务器通讯一下,保持session不会丢-->
    </head>
    </html>
          这种方法还是比较长见的,另外还有一种和上面类似的方法,不过他不是用meta自动涮新嵌套的iframe的方法。他是用javascript:window.setTimeout("functionname()",10000);第隔一段时间时间自动调用一个函数的方法,当然函数里还是要去连接一个空的文件。具体方法如下:      在要保持session面里加上:
    <script  id=Back  language=javascript></script><script language=javascript>
     function keepsession(){
      document.all["Back"].src="SessionKeeper.asp?RandStr="+Math.random();
      //这里的RandStr=Math.random只是为了让每次back.src的值不同,防止同一地址刷新无效的情况
      window.setTimeout("keepsession()",900000);  //每隔900秒调用一下本身
      }
     keepsession();
    </script>
          这样同一目录下建一个空内容的sessionKeeper.asp就文件就可以了!
      

  4.   

    用Cookie吧,Cookie理论上可以保存50年。
      

  5.   

    Asp.net夜话之二:asp.net内置对象
    准确地说,asp.net并没有内置对象这一说,jsp里确实把request、response这些当作jsp的内置对象,这里只不过是借用了一下jsp的说法而已。上面提到的很多都是在做asp.net开发时无需new就能使用的对象(类似的还有很多,在asp.net中所有的网页都是继承自System.Web.UI.Page这个类,上面的提到多是Page类的属性)。本文介绍System.Web.UI.Page类的几个常用属性,如Request、Response、Server、Session、Cookie、Application,并讲述了及表达式用法。
      

  6.   

    Cookie对象和Session对象一样也是用来保存特定的用户相关的数据,不过Session不同的是Cookie保存在客户端而不是服务器上,每次客户端发出请求的时候都会把Cookie一起发送到服务器,服务器每次响应客户端请求的时候会重新把Cookie发送到客户端保存。
    Cookie保存数据有以下特点:
    Cookie中的数据保存在客户端;
    Cookie中只能保存字符串类型的数据,如果需要在Cookie中保存其它类型数据,需要将其转换成字符串类型后保存;
    Cookie也有其默认生命周期,也可以手动设置,最大可设置成50年之后过期。
    同Session的情况一样,有可能在一个网站中使用到的Cookie不止一个,我们仍通过Cookie的名称来区分不同的Cookie。
    设置Cookie的过程就是在服务器的响应对象Response的Cookie集合中增加一个Cookie的实际,Response对象会把这个Cookie集合中的所有Cookie都发送客户端。
    Application
    Application和Session存储的数据类型和存储位置一样,都是存放Object类型的数据(也就是任意类型),并且存放在服务器上,不同的Application中的数据可以由网站中所有的用户来设置或者获取。并且Application中存放的数据没有时间限制,除非我们手动删除或者服务器重新启动,否则存放的数据都会丢失。
    下面是Session、Cookie和Application的区别:名称
     使用范围
     存储位置
     存放数据类型
     生命周期
     
    Session
     特定用户
     服务器
     Object,也就是任意类型
     有,可以自行设置
     
    Cookie
     特定用户
     客户端
     String,也就值字符串
     可以自行设置
     
    Application
     所有用户
     服务器
     Object,也就是任意类型
     无
      

  7.   


    你能用数字来说出你觉得加大了多大的负担吗?我们都知道到网站就是不断被客户端访问的,如果客户端每隔5分钟多访问一次网站上的一个“空白”的网页(你直接创建一个aspx就可以,什么也不用往里边写),这“肯定”给网站加大的负担而不是较小负担,但是这种负担完完全全应该忽略不计。
      

  8.   

    过期不是问题。但是Session不仅仅有“过期”问题,实际上还有“丢失”问题。面对丢失问题,使用cookie而放弃session我认为是很明智的(如果需要缓存数据可以使用Cache真正地具有很多缓存管理功能,而Session则不必用来做缓存)。