当前位置: 首页 > 图文教程 > 网络编程 > ASP > 浅谈session_onend的调试

ASP
asp分页(自己整理的2个分页程序)
ASP常用的系统配置函数
雨哲防采集策略之列表篇
雨哲浅谈关于防采集而不影响收录内容篇
asp数据库连接函数
ajax XMLHTTP Post Form时的表单乱码综合解决
ASP注入详细命令40条
用ASP实现MSSQL用户密码破解
ASP创建对象的两种方法比较
ASP字符串转换为整形、双精度型、布尔
ASP计算str2在str1中出现的次数
asp采集抓取网上房产信息的代码
ASP注册登陆实例代码
ASP中使用FileSystemObject时提高性能的方法
分享一个好东东,动态Include文件 (Dynamic File Includes)
解决 JScript 中使用日期类型数据时出现类型错误的问题
在ASP里面创建GUID
在JScript中使用缓存技术的实际代码
ASP javascript Application对象的Contents和StaticObjects做Cache的一些经验
海阳2006+功能中的潜水王

ASP 中的 浅谈session_onend的调试


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 44 ::
收藏到网摘: n/a

       session_onend是比较难调试的,这是因为:
   一、没有出错信息提示(这也难怪,是没有地方提示的,根本不知道要将出错提示信息放到什么地方去)。
   二、大多数情况下,也不能使用session.abandon来手工释放sesion进行调试——你释放了所有的session,那你在session_onend中不要用到session对象吗?所以,只好傻呼呼的等待session超时了。还好,session超时时域可以自己设,调试时设小点,比如2分钟或1分钟的。
   三、如果你只有一台电脑,那就更难调试了,原因不用我说了吧。
  
   下面我给大家说说我在调试session_onend时的一点点经验:
  
   一、不要怀疑你的session_onend没有执行(其实开始时我也曾经怀疑过,因为总相信自己的session_onedn事件没有错),常听有些人抱怨:“怎么我的session_onend没有执行,session_onstart是好好的”,当然了,session_onstart容易看到嘛。
   如果你不信的话,你将一个标记放到session_onend的第一行。
   sub session_onend
   application("flag1")="session_onend已经执行了"
   …………后面是你的session_onend的内容
   end sub
  
   然后等session超时后,用apptest.asp?key=flag1(apptest.asp后面附有)查看application("flag1")的值,你肯定能看到“session_onend已经执行了”。
   所以,一旦你的session_onend没有达到你的目的时,应该检讨你的session_onend事件有没有写好——跟asp文件一样,session_onend一旦遇到错误,马上停止执行……
  
   二、写session_onend事件时一定要仔细,要保证每个字每都不会错,保证不出现语法,不出现逻辑错误。这个只能你的眼睛和思维能帮上你。
   下面是我在调试聊天室的session_onend事件时的方法,供大学参考:
  
   我在下面的程序中设了几个标记:flag1,flag2,flag3,flag4,flag5
  
  <SCRIPT LANGUAGE="VBScript" RUNAT="Server">
  sub Session_onEnd
  ip=session("userip")
  application("flag1")=ip ——标记flag1
  chatdata=application("chatdata")
  onliuser=application("onliuser")
  kicklist=application("kicklist")
  uleave=false
  for i=0 to 50
   if chatdata(i,1)=ip then
   kicklist=replace(kicklist,",'#"&chatdata(i,0)&"'","")
   onliuser=replace(onliuser,",'"&chatdata(i,0)&"'","")
   chatdata(i,0)=""
   chatdata(i,1)=""
   chatdata(i,2)=0
   chatdata(i,3)=""
   chatdata(i,4)=0
   chatdata(i,5)=""
   uleave=true
   application("flag2")="找到同ip的聊客" ——标记flag2
   end if
  next
  kicklist=replace(kicklist,",'"&ip&"'","")
  application("flag3")="kicklist的值为:"&kicklist ——标记flag3
  if uleave then
   for i=0 to 50
   chatdata(i,4)=(chatdata(i,4) mod 4)+4
   next
   application("flag4")="执行了通知更新名单" ——标记flag4
  end if
  application("flag5")="第4标志" ——标记flag5
  application.lock
   application("kicklist")=kicklist
   application("onliuser")=onliuser
   application("chatdata")=chatdata
  application.unlock
  application("flag6")="执行了application变量更新" ——标记flag6
  end sub
  </script>
  
  
   然后就是开窗口、登录聊天室,关闭浏览器(不要正常退出),等session超时。session超时后(最好在另一台电脑上),用apptest.asp?key=flag6……apptest.asp?key=flag5……apptest.asp?key=flag4……查看各application的值,从而知道我的程序到底执行到了哪里。
   除非你看到最后一个标记flag6有值,否则证明你的程序存在语法错误!!
   这样可以找到程序在那部分出错,然后再分析有错的那一部分,重复上述步骤,直到你的session_onend达到你的要求。
&nbs