Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按名称计算会话总数_C#_Asp.net_Session_Global - Fatal编程技术网

C# 按名称计算会话总数

C# 按名称计算会话总数,c#,asp.net,session,global,C#,Asp.net,Session,Global,我发现本教程用于计算aspx网站上的会话量: 登录时,我正在会话中存储字符串(例如用户id): Session["Teacher"] = "123ABC"; 如果要计算所有会话,本教程可以,但如果使用两个不同的会话名称,例如:session[“Teacher”],session[“Student”],并且要计算按名称分隔的会话,本教程将无法满足您的要求 如何按名称计算总会话数?因此,我希望获得会话[“教师”]的计数和会话[“学生”] 谢谢。假设课程[“教师”]和课程[“学生”]是相互排斥的:

我发现本教程用于计算aspx网站上的会话量:

登录时,我正在会话中存储
字符串(例如用户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();
    }
}