我发现本教程可以计算aspx网站上的会话数量:
http://www.mindfiresolutions.com/How-to-Show-Session-Count-in-ASPNet-Web-Application-227.php
我在登录时在会话中存储String
(例如用户ID):
Session["Teacher"] = "123ABC";
当您想要计算所有会话时,但是当您使用两个不同的会话名称时,本教程很好,例如:Session["Teacher"]
,Session["Student"]
,并且您希望计算按名称分隔的会话,本教程不符合您的要求。
如何按名称统计总会话数?所以我希望获得Session["Teacher"]
的计数和Session["Student"]
感谢。
答案 0 :(得分:0)
假设Session["Teacher"]
和Session["Student"]
是互斥的:
protected void Application_Start(object sender, EventArgs e)
{
//Session Count is intialized with 0.
Application["TeacherSessionCount"] = 0;
Application["StudentSessionCount"] = 0;
}
然后,您指定Session["Teacher"]
:
...
Session["Teacher"] = "123ABC";
Application.Lock();
int countSession = (int)Application["TeacherSessionCount"];
Application["TeacherSessionCount"] = countSession + 1;
Application.UnLock();
...
以及您指定Session["Student"]
的位置:
...
Session["Teacher"] = "456XYZ";
Application.Lock();
int countSession = (int)Application["StudentSessionCount"];
Application["StudentSessionCount"] = countSession + 1;
Application.UnLock();
...
protected void Session_End(object sender, EventArgs e)
{
string key = null;
if (Session["Teacher"] != null)
key = "TeacherSessionCount";
else if (Session["Student"] != null)
key = "StudentSessionCount";
if (key != null)
{
Application.Lock();
int countSession = (int)Application[key];
Application[key] = countSession - 1;
Application.UnLock();
}
}
中描述的Session_OnEnd
事件的限制