经典ASP:如何列出激活的会话?

时间:2009-02-04 12:39:20

标签: asp-classic

是否有某种方法可以获得经典ASP中已激活会话的列表?

我想限制同时激活的会话数。

2 个答案:

答案 0 :(得分:3)

这是一篇很好的文章,展示了一种方法:Active User Count Without Global.asa by Josh Painter

我想你必须改变一些细节,但这是你解决问题的方法。作者不使用global.asa。

一种更简单的方法是将Sesssion_OnStartSession_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_OnStartSession_OnEnd来跟踪会话,方法是将相关会话信息保存到Application对象,日志文件,数据库等(具体取决于具体情况)你想用这些信息做什么)。

我们倾向于跟踪Application对象中活动会话的数量,以便大致了解在任何给定时间有多少人使用网站(当然,记住人们通常会有在会议结束前很长时间离开了网站)。它不是100%准确,但它足够接近当前活动的指南。

如果您只想要会话数,还可以使用Perfmon跟踪Sessions Current性能对象的Active Server Pages计数器(以及其他相关计数器)。显然这假设访问服务器,在这种情况下可能不是你想要的。

有关某些选项的详细信息,请尝试以下文章:How do I count the number of current users / sessions?(存档版本)