CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

关于session“永不过期”的问题!

楼主windzjp(赵依燃-lastidea.net)2006-06-13 16:23:26 在 Web 开发 / ASP 提问

这里的永不过期是是指,只要不关闭浏览器就保留session!  
   
  不用cookie!  
  不能刷新页面!  
   
  不要回答session.timeout=-1这样的答案!  
   
  JS每一段时间调用ASP,实现和服务器交互是否可行!? 问题点数:50、回复次数:25Top

1 楼dsmy()回复于 2006-06-13 16:26:46 得分 4

关注....  
  顶下  
  Top

2 楼starwx(小行星)回复于 2006-06-13 16:28:02 得分 4

你可以在网页上加一个隐藏的框架,在框架中每格几分钟刷新一次服务器的很小的ASP页面.Top

3 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2006-06-13 16:28:45 得分 4

你把其他路都封了,自己试验一下了....Top

4 楼windzjp(赵依燃-lastidea.net)回复于 2006-06-13 17:08:14 得分 0

一定会有更好的方法!  
   
   
   
  JS每隔一段时间调用ASP的函数是否可行?!  
  有没有人做过这类的东西!?Top

5 楼windzjp(赵依燃-lastidea.net)回复于 2006-06-13 17:31:36 得分 0

这种方法是否正确?!  
  我按我的思路写了一段,我测试了一下,1   分钟之内session真的不会丢失!,可是我不太清楚,不确认真的可行,高手指教一下!  
  为什么会这样,JS真的可以在不涮新页面的情况下保持和服务器交互!?  
   
  <%  
  session.Timeout=1  
  session("frist")="1"                           '定义第一个session变量  
  %>  
  <%  
  function   test()  
  session("secound")="2"                         '定义第二个session变量  
  end   function  
  %>  
   
  <script>  
   
  function   f(){  
  <%test%>                             //如果把这一句去掉,session   一分钟后就消失了!  
  }  
  </script>  
  <body   onload="javascript:setInterval('f()',100);">  
   
  <%=session("frist")%><br>  
  <%=session("secound")%>Top

6 楼windzjp(赵依燃-lastidea.net)回复于 2006-06-13 17:36:02 得分 0

晕,上一个搞错了,并不能证明session没有消失,因为每次刷新都重新对session赋值了,晕死,请高手指点!Top

7 楼BlueDestiny(Design Life - never-online.net)回复于 2006-06-13 17:49:40 得分 3

也不知道你的服务器到底有多大内存...Top

8 楼chxizi()回复于 2006-06-13 18:11:14 得分 3

关注中,也希望windzjp   (赵依燃-lastidea.net)   能尽快解决问题Top

9 楼jinfeng003(靳奉山)回复于 2006-06-13 18:20:55 得分 8

<iframe   width=0   height=0   src="session.asp">  
  </iframe>  
   
  session.asp里边什么也不用写,  
  加上<html>的刷新代码  
  每隔十分钟左右刷新一次,这样session就可以维护住了  
  <html>  
  <head>  
      <meta   http-equiv="Refresh"   content="600;url=session.asp">    
  </head>  
  </html>  
   
  不过,session在服务器端维护很消耗内存的,少用啊~~不行用cookiesTop

10 楼windzjp(赵依燃-lastidea.net)回复于 2006-06-13 22:56:52 得分 0

这是内部局网的一个监控系统!监控系统一开机就是个把月,session要一直保留,不过最多也就几个session,不会太占资源。  
   
  程序B/S结构  
   
  服务器内存一个G。  
   
  我想确定的是,能不能用JS调用服务器端ASP实现无刷新何存session!  
   
  我的一个同事说可以!不知道怎么实现!是不是真的可以呢?!  
   
  还是不是只有涮新页面才能保持session!包括iframe也是要涮新的!能不能不用涮新?我感觉是不可以的,但是想请高手确认一下,网上查不是到这方面知识!  
   
  谢谢大家关注Top

11 楼sibyle(先知)回复于 2006-06-13 23:17:12 得分 4

如果 是B/s结构 的 内部局网的  
   
  可以用  
  <meta>标记   
  <meta   http-equiv="Refresh"   content="时间;url=要刷新产网址">    
  试试Top

12 楼windzjp(赵依燃-lastidea.net)回复于 2006-06-14 09:10:19 得分 0

大家的方法都可以!  
   
  我是想不涮新页面!只用js不停调有asp的方法!是否可行!谢谢  
   
   
   
   
   
   
   
   
  ----------------------------------------------------------------  
  还是不是只有涮新页面才能保持session!包括iframe也是要涮新的!能不能不用涮新?我感觉是不可以的,但是想请高手确认一下,网上查不是到这方面知识!Top

13 楼jsnt_rd(C#ing...)回复于 2006-06-14 09:13:51 得分 4

个人觉得用session()始终是解决不了实际问题的  
  建议改用数据库标志位来判断,效果岂不是更好,而且你所谓的“永不过期”,可以通过时间来判断,想设多长有多长,真正做到随心所欲!Top

14 楼windzjp(赵依燃-lastidea.net)回复于 2006-06-14 09:29:00 得分 0

建议改用数据库标志位来判断  
   
   
  能不能讲的清楚点!谢谢  
   
  这里的session()主要是为了保存管理员的信息!用标志位怎么做,他   是什么作用?!没用过。Top

15 楼szlzc(咖啡加盐)回复于 2006-06-14 09:47:58 得分 3

关注Top

16 楼windzjp(赵依燃-lastidea.net)回复于 2006-06-16 09:30:14 得分 0

upTop

17 楼yeetoo(一土)回复于 2006-06-16 09:43:11 得分 3

异想天开!  
  session设计的目的是什么?就是保持对话状态,如果对话都不存在,还要让session存在?  
   
  可以将你想要一直存在的东西放在application中,别试图放在session中.  
   
  试过把每个用户的信息都放在application中吗?   我曾经把30多M的东西放在了application中,一切正常.注册application变量中不要用数组,否则会很慢,如果数组很大,CPU一直是100%.Top

18 楼tipboy(想做技术边缘人)回复于 2006-06-16 15:32:22 得分 2

csdn左上角的不就是这样吗Top

19 楼windzjp(赵依燃-lastidea.net)回复于 2006-06-21 15:19:10 得分 0

先说明情况:公司做监控系统,B/S结构,主要用在局域网内部!监控系统开机可能要开好长时间,管理员的ID和权限等是写在Session里的——我想不用Cookies的原因可能是Cookies不是很安全,还有就是局域网内,只是几台机子访问服务器,Session没有几个,所以即使总保持着Session也不会太占用资源,最起码服务器能承受的起。  
   
              保持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="300;url=sessionKeeper.asp">    
      <!--每隔300秒刷新一下自己,为了和服务器通讯一下,保持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()",900);     //每隔900秒调用一下本身  
      }  
    keepsession();  
  </script>  
     
   
              这样同一目录下建一个空内容的sessionKeeper.asp就文件就可以了!  
   
            问题没有解决:通过以上的方法Session保持应该没有问题了,IIS默认无请求的清除session的值为20分钟,我设的每次交互服务的时间都远远小于这个值,可是我大概过个一天多的时间,session还是无缘无故的没了!郁闷。  
   
              后来在网上多方查找终于找到答案:原来IIS为了保护服务器,有一个“回收”的概念!测试了半天终于有了点大体了解(不要笑我菜^-^)。先来看看这个“回收”在哪设置。  
   
              启动IIS管理器->应用程序池->右键->属性->回收选项卡,有一项是默认就起作用的,就是第一项:“回收工作进程(分钟)”默认值1740分钟,大约29个小时。他是什么意思呢?我个人理解:在session.timeout之后再过1740分钟自动把所有仍在保持的session清除。这个值最大可设为4000000,大概是2700多天!我直接取消了,不用他自动回收!问题终于解决。  
   
              另外这个属性对话框中还有其它几项:第二项应该是连接的用户超过了一定数目回收。第三项是到某一个时间就自动回收。在“性能”选项卡中“在空闲此时间段后关闭工作进程”,这里就是设置IIS默认session.timeout时间的地方了。默认值20分钟,这里同样最大值可设为4000000,和在ASP页中设置session.timeout最大值为1440不同。在这里设置超过大于1440的值是否起作用,我没作测试,我想应该是可以的。那为什么在ASP页中session.timeout的值最大只能是1440在IIS的属性中却能设的那么大呢?应该是属于一种保护机制:ASP页的session.timeout的值哪个用户都可以设,IIS里却只有管理员可以设,两者的权限不同,所以设置的范围就不同了。  
   
            以上错误的地方请高手指正!希望没有误人子弟。  
  Top

20 楼yinxiaoyue()回复于 2006-06-21 16:23:55 得分 2

保存先Top

21 楼cestar2005(往事随风)回复于 2006-06-21 16:42:21 得分 2

JS每一段时间调用ASP,实现和服务器交互是否可行!?  
  可以用XMLHTTP实现Top

22 楼hxnet(失业英雄)回复于 2006-06-21 17:27:50 得分 2

关注Top

23 楼BlueDestiny(Design Life - never-online.net)回复于 2006-06-21 17:35:39 得分 2

如果真要做成这样,不用太麻烦的,你试试加个iframe进来,把height=1,里面不间段刷新就行了。Top

24 楼windzjp(赵依燃-lastidea.net)回复于 2006-06-21 23:31:35 得分 0

谢谢大家关注,结贴!Top

25 楼hulin862008(让爱永恒)回复于 2007-01-26 13:06:03 得分 0

嘿嘿!可以!收藏起来先!不知道能把帖子顶上去不哟!让大家也在看看!技术就是这个学来的呀!Top

相关问题

关键词

得分解答快速导航

  • 帖主:windzjp
  • dsmy
  • starwx
  • liuxiaoyi666
  • BlueDestiny
  • chxizi
  • jinfeng003
  • sibyle
  • jsnt_rd
  • szlzc
  • yeetoo
  • tipboy
  • yinxiaoyue
  • cestar2005
  • hxnet
  • BlueDestiny

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo