ASP.NET应用程序的在线用户

时间:2015-10-13 01:25:09

标签: asp.net asp.net-mvc-4 simplemembership

看到很多与同一概念相关的文章和链接。

Counting online users using asp.net

Is there any ASP.NET application to monitor online user and page view log report?

我的情况略有不同。我的应用程序是MVC4并使用SimpleMembershipProvider。我不确定为什么GetNumberOfUsersOnline无效。

https://msdn.microsoft.com/en-us/library/system.web.security.membership.getnumberofusersonline(v=vs.110).aspx

任何想法?如何以简单有效的方式做到这一点。我只是在我网站的一个地方使用它。

5 个答案:

答案 0 :(得分:4)

我在网上找到this它看起来好像适合你。只需将此代码添加到Global.asax.cs文件中:

protected void Application_Start(Object sender, EventArgs e)
{

    Application.Lock();
    Application["UserCount"] = 0;

}
protected void Session_Start(Object sender, EventArgs e)
{

    Application.Lock();
    Application["UserCount"] = (int)Application["UserCount"] + 1;
    Application.UnLock();
}

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

}

然后,当您需要访问用户计数时,您可以使用:

var count = (int)Application["UserCount"];

答案 1 :(得分:2)

来自Microsoft文档:

  

GetNumberOfUsersOnline 返回当前ApplicationName的用户数,其中最后活动日期大于当前时间减去 UserIsOnlineTimeWindow 。通过 ValidateUser UpdateUser 方法验证用户凭据时,或者当调用<时,上次活动日期/时间戳会更新为当前日期和时间strong> GetUser 不带参数的重载或使用userIsOnline参数的重载指定应更新日期/时间戳。

您可以看到GetNumberOfUsersOnline依赖于多个参数而且没有效果。 作为一种解决方法,我建议您可以使用SqlMembershipProvider并覆盖GetNumberOfUsersOnline(),以便在此处实现您的逻辑。

public class MyMembershipProvider : SqlMembershipProvider
{
  public override bool ValidateUser(string username, string password)
  {
    if (base.ValidateUser(username, password))
    {
        // successfully logged in. add logic to increment online user count.

        return true;
    }

    return false;
 }

 public override int GetNumberOfUsersOnline()
 {
    // add logic to get online user count and return it.
 }
}

在用户注销中减少在线用户计数逻辑

如果您想要跟踪访问者和访问过的网页,请注意以下几点:

答案 2 :(得分:2)

您可以尝试阅读列出的效果计数器here

  

当前匿名用户是匿名IIS用户的数量

     

当前非匿名用户是授权IIS用户的数量

答案 3 :(得分:2)

与您的代码愉快正交的另一个不错的解决方案是Google Analytics。 http://www.google.com/analytics/使用GA,您可以在网站上看到活跃用户的实时显示。随着时间的推移,您还可以看到用户活动的高峰和低谷。

答案 4 :(得分:2)

您可以使用signalR跟踪已连接的用户。使用此功能,您可以高效地在线计算。实时并跟踪连接的用户信息。您也可以将条件设​​置为跟踪登录用户。所以,采用最新技术。您可以使用现有的MVC应用程序实现。

您可以参考此官方教程。

http://www.asp.net/signalr