【问题标题】:Check if anyone is currently using an ASP.Net app (site)检查是否有人当前正在使用 ASP.Net 应用程序(站点)
【发布时间】:2010-10-05 05:18:18
【问题描述】:

我构建 ASP.NET 网站(通常托管在 IIS 6 下,通常使用 SQL Server 后端和表单身份验证)。

客户有时会问我是否可以检查在给定时刻是否有人当前正在浏览(和/或是否有用户当前登录)他们的网站,通常这样他们就可以安全地进行部署(他们想要一个修补程序,例如)。

我知道网络基本上是无状态的,所以我不能确定是否有人关闭了浏览器窗口,但我想会有一些尚未超时的会话或其他东西,并且肯定会记录 -用户内...

是否有标准和/或简单的方法来检查这一点?

【问题讨论】:

    标签: asp.net iis session


    【解决方案1】:

    Jakob 的 answer 是正确的,但确实依赖于安装和配置会员功能。

    在线跟踪用户的一种粗略但简单的方法是将计数器存储在Application 对象中。这个计数器可以在他们的会话开始和结束时增加/减少。在 MSDN 网站上有一个这样的例子:

    Session-State Events (MSDN Library)

    由于默认会话超时为 20 分钟,因此无法保证此方法的准确性(但由于 HTTP 的无状态和断开连接的性质,这适用于任何 Web 应用程序)。

    【讨论】:

      【解决方案2】:

      我知道这是一个很老的问题,但我想我会插话的。为什么不使用 Google Analytics 并查看他们的实时仪表板?它将需要少量代码修改(即单个脚本导入),并且会完成您正在寻找的一切......

      【讨论】:

        【解决方案3】:

        您可能正在寻找Membership.GetNumberOfUsersOnline 方法,尽管我不确定它的可靠性。

        【讨论】:

        • 我相信我必须为此使用会员服务提供商。
        【解决方案4】:

        其他用户建议的会话是一种基本的做事方式,但不太可靠。它们在某些情况下也可以很好地工作,但在其他情况下则不行。

        例如,如果用户正在下载大文件或观看视频或收听播客,他们可能会在同一页面上停留数小时(除非 ASP 跟踪对二进制数据的请求。 NET),但仍在使用您的网站。

        因此,我的建议是使用服务器日志来检测该网站当前是否被很多人使用。它使您能够:

        • 查看完成了哪些类型的请求。检测 人类爬虫 非常容易,并且通过一些经验,还可以查看人类当前是否在在做一些关键的事情(例如例如在网站上写评论、编辑文档或输入她的信用卡号码并订购东西)或不(例如浏览)。
        • 查看谁在执行这些请求。例如,如果 Google 正在抓取您的网站,那么离线是一个非常糟糕的主意,除非 搜索评级 对您来说并不重要。另一方面,如果机器人试图通过向不同页面发出请求来破解您的网站两个小时,那么您肯定可以离线。

        注意:如果网站有一些关键区域(例如,写这个长答案,如果 Stack Overflow 在我提交答案前几秒钟下线,我会很生气),你也可以发送常规 AJAX 请求到服务器,而用户停留在页面上。当然,在实现这样的功能时一定要小心,并考虑到它会增加使用的带宽,并且如果用户禁用了 JavaScript 将无法使用。

        【讨论】:

        • 感谢@MainMa,但您所说的“服务器日志”是指哪些日志?不是服务器的事件日志?
        • @MGOwen:我说的是您看到每个对服务器的 HTTP 请求的日志。当然可以使用过滤器来去除无意义的条目(例如普通网站的图像和 CSS 文件)。
        【解决方案5】:

        您可以运行命令netstat 并查看您的网站端口存在多少活动连接。 http 的默认端口是 *:80。 https 的默认端口是 *:443。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-12-21
          • 2015-11-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-30
          • 2018-01-05
          • 1970-01-01
          相关资源
          最近更新 更多