100分问题,asp里如何动态设定超时时间

szdino 2000-07-19 12:07:00
我的一个应用是这样的,iis里设定了session的超时时间,然而我有
一个页面上我做了个activex form,该form独立和后台socket server
通讯,该activex form是用来做大批量数据录入工作的.
当用户做数据录入的时候,数据通过activex form的tcpip
和后台联系(不是iis server),so ...iis server并不会收到用户请求
因此,iis server会在一定时间后,关闭session,并注销用户。


我自己想了两个办法,
1.当调用该叶面的时候,asp自动更改超时时间,改成不超时
我该如何改?
1.1 该方法也不好,因为,当用户在输入的完毕的时候,
不注销系统,就关了浏览器,那么我的session_onend将不会执行
2.我的页面定时向后台发出请求,让iis认为session很活跃。
这个如何做到?并且做到这一点,必须:不允许该叶面进行刷新。否则activex
form将会重新载入,当前状态将消失。

请指教!




...全文
355 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
szdino 2000-07-19
  • 打赏
  • 举报
回复
ghj1976,tyro和victoryu给我的办法,我试验成功了,感谢所有关心的人!
我怎么分别给你们专家分数呢?
Tyro 2000-07-19
  • 打赏
  • 举报
回复
就是把页面分成两帧,一帧a负责定期向后台发送请求,另一帧b负责处理你要做的事情,
这样刷新的只是a,而b不会受到影响
VictorYu 2000-07-19
  • 打赏
  • 举报
回复
把这个代码加在你的HEAD之间试试.

<object classid="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83" id="forsession">
<param NAME="UseHeader" VALUE="TRUE">
<param NAME="TextQualifier" VALUE=",">
<param NAME="DataURL" VALUE="">
</object>
<script>
var nIndex = 0;
setTimeout("refreshpage();", 5000);

function refreshpage()
{
nIndex ++;
forsession.DataURL = "forsession.asp?ID=" + nIndex;
forsession.Reset();
alert(forsession.DataURL);
setTimeout("refreshpage();", 5000);
}
</script>

forsession.asp:写成以下这样

<%@language=vbscript%>
<%
dim id
id=Request.QueryString("ID")
Response.Write id
%>

好就给分罗

szdino 2000-07-19
  • 打赏
  • 举报
回复
tyro能不能说详细点?
VictorYu 2000-07-19
  • 打赏
  • 举报
回复
用一个TDC控件吧,每隔多长时间让它使用不同的DataURL来Reset一下,这样可以保持Session.
唯鱼
Tyro 2000-07-19
  • 打赏
  • 举报
回复
用一个看不见的帧,让这个帧中的页定时向后台发出请求,这样不会影响主要的页面
蝈蝈俊 2000-07-19
  • 打赏
  • 举报
回复
赫赫,上面写错了
在页面的unload事件中提交到一个新的页面,在新的页面释放服务器的资源。

Unload事件(DHTMLPage)
响应用户而漫游离开给定的HTML页面或关闭浏览器时发生。

在新的页使用
<%
session.timeout = 20 '返回正常时的值
%>


蝈蝈俊 2000-07-19
  • 打赏
  • 举报
回复
在页面的unload事件中提交到一个新的页面,在新的页面释放服务器的资源。

Unload事件(DHTMLPage)
响应用户而漫游离开给定的HTML页面或关闭浏览器时发生。

在新的页使用
<%
session.timeout = 1000 '你需要的超时分钟数
%>


华南虎哥 2000-07-19
  • 打赏
  • 举报
回复
在打开这个窗体时弹出一个小窗体,让那个小窗体定时刷新来改变不知道行不行。你不凡试试,如果成功,EMAIL:hblinux@163.net
szdino 2000-07-19
  • 打赏
  • 举报
回复
你这个想法我也想到过,但是用户可能在timeout=1000的时候关掉ie,
那么系统资源会狂浪费的.
能不能让一个页面自动发送数据给iisserver,然后又不刷新?
蝈蝈俊 2000-07-19
  • 打赏
  • 举报
回复
赫赫,我想这样全部都搞定了。
蝈蝈俊 2000-07-19
  • 打赏
  • 举报
回复

<%
session.timeout = 20 '返回正常时的值
%>
写在下一个页面的开头。(或所有不用超时的页面的开头)

要超时的页面在开头写
<%
session.timeout = 1000 '你需要的超时分钟数
%>
szdino 2000-07-19
  • 打赏
  • 举报
回复
thank ghj1976,

试一试在要超时的页面中的开头加一句:<%
session.timeout = 1000 '你需要的超时分钟数%>
在页面结尾的地方设置
<% session.timeout = 20 '返回正常时的值
%>
这样不行的
因为asp在后台处理完毕后送到前台ie上去的
所以,你这两句话在ie里是一下子就处理完了,结果,页面送到前台去的时候...
其实后台session.timeout数是20
蝈蝈俊 2000-07-19
  • 打赏
  • 举报
回复
试一试在要超时的页面中的开头加一句:
<%
session.timeout = 1000 '你需要的超时分钟数
%>
在页面结尾的地方设置

<%
session.timeout = 20 '返回正常时的值
%>
szdino 2000-07-19
  • 打赏
  • 举报
回复
xqzz可能没看清楚我的问题,我的问题时,我的一个页面上
有一个activex Form,然后,用户就停留在这个页面上,用这个activex Form
进行某项输入操作(时间很长),activex form是自己跟后台某个socket server用
tcpip操作.所以iis server会在很长时间内,收不到请求,会认为该用户
session断了....
xqzz 2000-07-19
  • 打赏
  • 举报
回复
我想实现不超时没有这么难吧,通常在第一个程序中,用户登录,获得一个登录的id,存储到session中,然后传递到下一个页面时,这个值继续在session中一路传下去,时间长就要超时,要精确的控制超时时间我不知道怎么办,但是如果不超时,我想只要在程序中将session中的id号,保存在该页的变量中,注销原session,到转入下一页前,再将id号赋值给session,这样一路下去,回超时吗?其他参数的传递,我想也可以用这个方法解决吧!

28,390

社区成员

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

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