统计在线人数,在论坛或聊天软件中用的比较多,无论是在线人数的统计还是网站被访问的总数,在这里我们都要用到Application来保存状态,这点不用多说,在asp.net中我们可以使用全局应用程序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)
{
//在新会话启动时运行的代码
Application.Lock();
Application["count"]= (Convert.ToInt32(Application["count"])+1).ToString();
Application.UnLock();
}
void Session_End(object sender, EventArgs e)
{
//在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式
//设置为 StateServer 或 SQLServer,则不会引发该事件。
Application.Lock();
Application["count"] = (Convert.ToInt32(Application["count"]) -1).ToString();
Application.UnLock();
}
</script>
在配置文件中web.config也需要配置以下信息
<sessionState mode="InProc" timeout="1"></sessionState>
session的时间设置为1,这样当用户关闭浏览器的时候,也能很快从application中移除
上面用到了Application.Lock()和Application.UnLock(),主要是为了防止同时多个用户一起访问,这样的话如果不这样处理,就会被当做一个用户来处理,所以要先锁住,一个一个统计;
有时候还要考虑到服务器端点或死机的情况,可以把访问数记录下来,然后读取,在这里就不在多说了,自己慢慢研究吧