【问题标题】:asp.net visitors count (online users) for today-yesterday in .net 4.net 4 中今天和昨天的 asp.net 访问者计数(在线用户)
【发布时间】:2011-08-06 03:02:09
【问题描述】:

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

参考:
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 ?

提前致谢

【问题讨论】:

    标签: c# asp.net count


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回答/但是是否可以在 session_start 或 session_end 中使用一些代码从/向数据库读取/写入一些数据?应用程序性能的平均值!
    • 这可能最终取决于您的整个系统架构,但是对于中小型网站,我不明白为什么会出现问题。我会尝试一下,看看它是如何工作的,如果碰巧有任何问题,那么可以集中精力解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 2016-05-28
    • 2021-10-29
    • 2014-05-25
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多