我使用自己的系统来处理用户身份验证,数据库在mysql中维护。
现在,当我看到像
这样的东西时System.Web.Security.Membership.GetNumberOfUsersOnline()
我想知道如何使用mysql获取用户数量。我在web.config中设置了一个生成了所有表的数据库,但是当我调用这个预定义的函数时,我仍然得到0
。
现在,我在mysql中有一个维护角色的单独数据库。它的工作原理是因为它们生成了表。现在我想知道如何获得所有用户的数量,包括匿名用户。
答案 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”方法,它们什么都不做。如果你走这条路,你的会员类可能会有些混乱。
希望这会有所帮助。祝你好运!