是否有某种方法可以获得经典ASP中已激活会话的列表?
我想限制同时激活的会话数。
答案 0 :(得分:3)
这是一篇很好的文章,展示了一种方法:Active User Count Without Global.asa by Josh Painter
我想你必须改变一些细节,但这是你解决问题的方法。作者不使用global.asa。
一种更简单的方法是将Sesssion_OnStart
和Session_OnEnd
事件挂钩到global.asa中,并从作为Application变量实现的会话列表中添加/删除该项。
如果您只想要计数会话,您可以这样做:
Sub Session_OnStart
Application.Lock
Application("count") = Application("count") + 1
Application.Unlock
End Sub
Sub Session_OnEnd
Application.Lock
Application("count") = Application("count") - 1
If Application("count") < 0 then ' Could only happen if some other function interfers
Application("count")=0
End If
Application.Unlock
End Sub
在您的ASP文件中
<%
Response.Write "There are currently " & Application("count") & "active sessions>"
%>
答案 1 :(得分:1)
您无法从另一个会话访问一个会话,因此没有内置方法来获取所有活动会话的列表。但是,您可以使用global.asa中的Session_OnStart
和Session_OnEnd
来跟踪会话,方法是将相关会话信息保存到Application
对象,日志文件,数据库等(具体取决于具体情况)你想用这些信息做什么)。
我们倾向于跟踪Application
对象中活动会话的数量,以便大致了解在任何给定时间有多少人使用网站(当然,记住人们通常会有在会议结束前很长时间离开了网站)。它不是100%准确,但它足够接近当前活动的指南。
如果您只想要会话数,还可以使用Perfmon跟踪Sessions Current
性能对象的Active Server Pages
计数器(以及其他相关计数器)。显然这假设访问服务器,在这种情况下可能不是你想要的。
有关某些选项的详细信息,请尝试以下文章:How do I count the number of current users / sessions?(存档版本)