C# 按名称计算会话总数
我发现本教程用于计算aspx网站上的会话量: 登录时,我正在会话中存储C# 按名称计算会话总数,c#,asp.net,session,global,C#,Asp.net,Session,Global,我发现本教程用于计算aspx网站上的会话量: 登录时,我正在会话中存储字符串(例如用户id): Session["Teacher"] = "123ABC"; 如果要计算所有会话,本教程可以,但如果使用两个不同的会话名称,例如:session[“Teacher”],session[“Student”],并且要计算按名称分隔的会话,本教程将无法满足您的要求 如何按名称计算总会话数?因此,我希望获得会话[“教师”]的计数和会话[“学生”] 谢谢。假设课程[“教师”]和课程[“学生”]是相互排斥的:
字符串(例如用户id):
Session["Teacher"] = "123ABC";
如果要计算所有会话,本教程可以,但如果使用两个不同的会话名称,例如: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\u OnEnd
中描述的事件的限制您的意思是要计算存储在特定会话中的对象数量?您应该更新您的问题,使其更清楚您的问题。您混淆了会话(每个用户都有一些服务器内存)和会话密钥(该内存由几个密钥表示,每个密钥中都有一个数据项)
...
Session["Teacher"] = "123ABC";
Application.Lock();
int countSession = (int)Application["TeacherSessionCount"];
Application["TeacherSessionCount"] = countSession + 1;
Application.UnLock();
...
...
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();
}
}