asp.net访客数量(在线用户)今天 - 昨天在.net 4

时间:2011-08-05 17:48:21

标签: c# asp.net count

我为我的应用程序为访客数量(在线用户)编写了以下代码:

参考:
http://aspdotnetfaq.com/Faq/How-to-show-number-of-online-users-visitors-for-ASP-NET-website.aspx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using CardCharge.Classes;

namespace CardCharge
{
    public class Global : System.Web.HttpApplication
    {

        protected void Application_Start(object sender, EventArgs e)
        {
            Application["OnlineUsers"] = 0;
        }

        protected void Session_Start(object sender, EventArgs e)
        {
            Application.Lock();
            Application["OnlineUsers"] = (int)Application["OnlineUsers"] + 1;
            Application.UnLock();
        }

        protected void Application_BeginRequest(object sender, EventArgs e)
        {

        }

        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {

        }

        protected void Application_Error(object sender, EventArgs e)
        {

        }

        protected void Session_End(object sender, EventArgs e)
        {
            Application.Lock();
            Application["OnlineUsers"] = (int)Application["OnlineUsers"] - 1;
            Application.UnLock();
        }

        protected void Application_End(object sender, EventArgs e)
        {

        }
    }
}  

我也找到了以下使用IHttpModule的链接:
http://blog.sb2.fr/post/2008/12/01/HowTo-Get-Current-Online-Users-Count-and-Infos-with-ASPNET.aspx

我更喜欢使用简单的global.asax来实现我的目的,但这两种方式太旧了(3年前) 是否有更好的方式在.net 4中获取在线用户(访客数量)?

也是为了得到一些计数(比如昨天)我需要数据库!
但是可以在session_start中连接sql server 2008或在全局asax中连接特别 session_end吗?

提前致谢

1 个答案:

答案 0 :(得分:2)

我看到的“标准”方法是在global.asax中使用Session_Start和Session_End。 ASP.net 4尚未更改此功能。这种方法唯一真正的限制是服务器仍然会认为用户已登录,直到会话结束,直到会话超时配置中指定的分钟数已经过去才会发生。

有关会话超时的详细信息,请参阅此页面: http://forums.asp.net/t/1283350.aspx

一种更强大,更新,但更难的方法是使用轮询来确保客户端始终连接到服务器。有关该主题的概述,请参阅此Wikipedia文章: http://en.wikipedia.org/wiki/Comet_(programming))