如何统计我的应用程序中的在线用户?

时间:2011-12-31 07:57:35

标签: c# mysql asp.net-mvc

我使用自己的系统来处理用户身份验证,数据库在mysql中维护。

现在,当我看到像

这样的东西时
System.Web.Security.Membership.GetNumberOfUsersOnline()

我想知道如何使用mysql获取用户数量。我在web.config中设置了一个生成了所有表的数据库,但是当我调用这个预定义的函数时,我仍然得到0

现在,我在mysql中有一个维护角色的单独数据库。它的工作原理是因为它们生成了表。现在我想知道如何获得所有用户的数量,包括匿名用户。

2 个答案:

答案 0 :(得分:6)

您可以尝试将此添加到global.asax:

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

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

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

我在这里找到了它:

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

这基本上可以告诉您应用程序当前有多少会话,无论他们是否已登录。您可以修改此会话以包含有关哪些用户已登录的详细信息,并且它与您用于成员资格的系统无关。 / p>

答案 1 :(得分:1)

如果您已经编写了自己的“系统”来处理身份验证,那么您必须编写自己的成员资格提供程序才能利用MembershipProvider定义的方法。

以下是从MSDN构建您自己的提供商的概述。

需要注意的一点是 - 你必须实现的方法数量非常大(有些方法相当无用,恕我直言)。多年来我写了一些,通常我们不使用一些方法,所以我们最终得到一些“NotImplemented”方法,它们什么都不做。如果你走这条路,你的会员类可能会有些混乱。

希望这会有所帮助。祝你好运!