繁体   English   中英

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

[英]Online Users on ASP.NET Application

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

使用asp.net统计在线用户

是否有任何ASP.NET应用程序来监控在线用户和页面查看日志报告?

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

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

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

我发现这个网上它看起来它会为你工作。 只需将此代码添加到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"];

来自Microsoft文档:

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

您可以看到GetNumberOfUsersOnline依赖于多个参数而且没有效果。 作为一种解决方法,我建议你可以nherits 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.
 }
}

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

如果您想要访问跟踪访问者和访问过的页面,请在此处提

您可以尝试阅读此处列出的性能计数器:

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

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

另一个与您的代码正常结合的好方案是Google Analytics。 http://www.google.com/analytics/使用GA,您可以在网站上看到活跃用户的实时显示。 随着时间的推移,您还可以看到历史记录,并且可以看到用户活动的高峰和低谷。

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

你可以参考这个官方教程。

http://www.asp.net/signalr

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM