session问题,在线等

eyun 2003-10-12 02:16:16
我的global.asa文件如下,为什么不能执行第二个数据库操作的函数,当我关闭浏览器还是没有起作用

<script language="VBScript" runat="server">
sub session_onstart
response.write "head"
session("time")=now
end sub

sub session_onend
Set Conn=Server.CreateObject("ADODB.Connection")
Connstr="DBQ="+server.mappath("user.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;ImplicitCommitSync=Yes;MaxBufferSize=512;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UserCommitSync=Yes;"
Conn.Open connstr
q="insert into user(email) values('addfgdfgsdfga')"
conn.execute q
end sub
</script>
...全文
43 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
eyun 2003-10-12
  • 打赏
  • 举报
回复
好了,我把设置数据源的语句写到了session得onstart里面,可以了,这样也可以用相对路径了,谢谢quady(这个世界好难混)
quady 2003-10-12
  • 打赏
  • 举报
回复
你试试就知道结果啦。
给你一段我以前用过的,绝对没有问题的。
<script language=vbscript runat=server>
sub session_onstart()
set session("conn")=server.createobject("adodb.connection")
session.timeout=1
end sub
sub session_onend()
conn_str="DRIVER=SQL Server; SERVER=127.0.0.1; DATABASE=mydata;UID=aaaaa;PWD=aaaaa"
session("conn").open conn_str
sql1="delete from car_temp where com_temp_id='" & session("com_temp_id") & "'"
session("conn").execute(sql1)
end sub
</script>

参考一下,如果还不行,估计是你连接数据库那里有错,或者asa的路径不对。
eyun 2003-10-12
  • 打赏
  • 举报
回复
绝对路径不现实啊,我在一本参考史上看到可以使用server对象阿
quady 2003-10-12
  • 打赏
  • 举报
回复
还有这句话:Connstr="DBQ="+server.mappath("user.mdb")+";
因为不能使用Server对象,所以你要写成绝对路径。
quady 2003-10-12
  • 打赏
  • 举报
回复
<script language="VBScript" runat="server">
sub session_onstart
response.write "head"
Set session("conn")=Server.CreateObject("ADODB.Connection")
session("time")=now
session.timeout=1 '这里控制session超时的时间
end sub

sub session_onend
Connstr="DBQ="+server.mappath("user.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;ImplicitCommitSync=Yes;MaxBufferSize=512;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UserCommitSync=Yes;"
session("conn").Open connstr
q="insert into user(email) values('addfgdfgsdfga')"
session("conn").execute q
end sub
</script>

加了一句session.timeout=1
系统默认是20分钟,这里改成1分钟了,你等1分钟就可以看到结果了。
eyun 2003-10-12
  • 打赏
  • 举报
回复
我请求的网页已设置了session.Timeout=1网页如下

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>

<body>
<%
session.Timeout=1
response.Write(session("time"))
response.Write "session.asp"
%>

</body>
</html>
alan815 2003-10-12
  • 打赏
  • 举报
回复
先把你的session会话时间改的很短,在IIS中可以更改,然后关闭浏览器,等到刚才你改的时间,再看看你的数据库有没有变化。session_onend 不是浏览器关闭就立刻触发的。
eyun 2003-10-12
  • 打赏
  • 举报
回复
还是不行,session得onend 事件是不是在关闭所请求的网站的网页时执行。
孟子E章 2003-10-12
  • 打赏
  • 举报
回复
session失效默认为20分钟之后
quady 2003-10-12
  • 打赏
  • 举报
回复
Session对象的OnEnd事件里除了Application和Session对象外,其他内置对象(Response、Request、Server、Cookie)都不能使用的。
所以你可以在Application_onStart事件里把Connect保存到Session内,然后在onEnd事件调用就OK了。

<script language="VBScript" runat="server">
sub session_onstart
response.write "head"
Set session("conn")=Server.CreateObject("ADODB.Connection")
session("time")=now
end sub

sub session_onend
Connstr="DBQ="+server.mappath("user.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;ImplicitCommitSync=Yes;MaxBufferSize=512;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UserCommitSync=Yes;"
session("conn").Open connstr
q="insert into user(email) values('addfgdfgsdfga')"
session("conn").execute q
end sub
</script>

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧