黑马程序员技术交流社区
标题:
asp.net怎么统计session数量啊
[打印本页]
作者:
淡忘回忆
时间:
2013-10-5 22:26
标题:
asp.net怎么统计session数量啊
本帖最后由 淡忘回忆 于 2013-10-13 14:46 编辑
我要做一个同时在线人数的功能,登录后用session存用户信息,怎么统计有多少个session啊,还有就是不要把不同的session都统计到一起啊
作者:
guo329838627
时间:
2013-10-6 14:00
这个好像是只能创建一个session,然后记录下保存到数据库或者txt文件。
要是统计的话,你可以用application呀,比这个好多了!
作者:
ˋ初°见
时间:
2013-10-11 12:47
在网站中添加一个Global.asax全局应用程序文件.
Global.asax
<%@ Application Language="C#" %>
<script runat="server">
void Application_Start(object sender, EventArgs e)
{
//应用程序启动时运行的代码
Application["count"] = 0;
}
void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
}
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
}
void Session_Start(object sender, EventArgs e)
{
//对Appliaction加锁以防止并行性
Application.Lock();
//增加一个在线人数
Application["count"] = (int)Application["count"] + 1;
//解锁
Application.UnLock();
}
void Session_End(object sender, EventArgs e)
{
Application.Lock();
//减少一个在线人数
Application["count"] = (int)Application["count"] - 1;
Application.UnLock();
}
</script>
default.aspx
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%Response.Write(Application["count"]); %>
</div>
</form>
</body>
</html>
作者:
淡忘回忆
时间:
2013-10-11 18:53
ˋ初°见 发表于 2013-10-11 12:47
在网站中添加一个Global.asax全局应用程序文件.
Global.asax
我记得这个好像有点BUG,退出时不能减少计数
作者:
夢醒了⊙﹏⊙b心
时间:
2013-10-11 21:45
这是我写的统计在线人数的方法 希望适合你 放在global中最好 因为aplication是直接在程序开始时运行的
protected void Application_Start(Object sender, EventArgs e)
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
if (Application["User_Sesstions"] == null)
{
Application["User_Sesstions"] = 0;
}
}
protected void Session_Start(Object sender, EventArgs e)
{
Application.Lock();
Application["User_Sesstions"] = (int)Application["User_Sesstions"] + 1;
Application.UnLock();
}
protected void Session_End(Object sender, EventArgs e)
{
Application.Lock();
Application["User_Sesstions"] = (int)Application["User_Sesstions"] - 1;
Application.UnLock();
Hashtable table = (Hashtable)Application["Online"];
if (table[Session.SessionID] != null)
{
table.Remove(Session.SessionID);
}
Application["Online"] = table;
}
复制代码
作者:
夏闯富
时间:
2013-10-12 10:29
定义一个int型全局变量并赋初值为0 ,然后在
专门用于保存用户信息的Sessiond
的代码 后面让全局变量自增+1
在用户退出登陆后或者在一定时间内 无Post操作后 销毁对应Session信息后 让全局变量自减-1
统计在线人数 建议还是用Application。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2