2011-03-12 80 views
2

我的环境是ASP.Net + IIS 7.0 + Windows Server 2008 + .Net 3.5。我想知道在线用户数量和活动会话数量是否相同?另一个问题是,无论它们是否相同,如何计算它们(即给定时间,在线用户数量以及相关活动会话数量)?在线用户数和活动会话数

由于事先 乔治

回答

4

为了你的第一个问题,会话和用户是不一样的。每个用户都有一个会话,但有些会话不是活动的,并且没有用户。这些会话在超时时间后由asp.net引擎自动结束。即由于http是断开的协议,网络服务器无法知道用户是在请求之间还是刚刚放弃会话。

如果要跟踪活动会话的数量,可以使用globals.asax文件的session_start和session_end方法。 你可以有一个简单的计数器,在开始时递增,在结束时递减。

+0

谢谢Elad!你的意思是会话只在超时时才变得不活跃? (即在超时之前,会话被视为活动)?如果超时不是唯一会导致会话不活动的情况,还有其他情况吗? – George2 2011-03-12 10:44:02

+3

注意,只有在内存会话状态下使用session_end才会被调用。使用超出进程状态(状态服务)或数据库,它不会被调用。 – Richard 2011-03-12 11:40:47

+0

如果我使用基于内存的会话状态,我想知道会话是否只在超时时变得不活跃? (即在超时之前,会话被视为活动)?如果超时不是唯一会导致会话不活动的情况,还有其他情况吗? – George2 2011-03-12 14:42:15