我将如何跟踪我网站上当前会话的数量?现在跟踪谁在网站上
回答
如果你只是想知道谁在通过一个小小的rinky-dink网站上的页面进行查看,一种方法是拥有最新请求的应用程序范围(或静态)列表以及请求的日期/时间。每当有人请求一个页面时,删除所有“旧”点击(大于X分钟),并附加(或更新)访问者的信息,现在的日期/时间,
请注意,对于真正繁忙的网站,这可能是一个坏主意。一个更具可扩展性的解决方案是在用户表中创建一个“上次访问”列,并在用户请求页面时进行更新。但是这对跟踪匿名/未登录的用户无效。无论哪种方式,要查看谁是“活跃”,可以浏览数据并找到上次访问时间少于X分钟前的所有访问/用户,其中X是您认为合适的某个数字。 20-60分钟通常足够好。
一个非常简单的方法是跟踪每个用户的最后一次活动。经过一段时间没有活动,你说这个用户不再活跃。
一种简单的方法是编写一个小的http模块(或者甚至利用global.asax)来管理何时创建会话,何时会话结束以更新所有当前活动用户的集合或数据库表以及当会话结束时删除记录。
RE:会话结束后,你仍可以正常访问会话本身或从任何发件人财产或财产EventArgs的最起码的会话标识符。这将为您提供一种使用会话标识符将asp.net会话关联到用户的简单方法。您可以通过在调试中启动应用程序并在即时窗口中执行Session.Abandon()轻松地进行测试。以编程方式触发此事件,以便您可以使用可以调试的实时代码来查看它。
注意我并不是100%确定使用sender/args,但是你应该能够直接在global.asax SessionEnd中访问会话本身,只要这样做。Session仍然可用(确保不使用HttpContext.Current.Session,因为上下文不存在)。
试过了,它不能很好地工作。当会话以超时结束时,会话结束后您将获得会话结束事件,因此您不知道哪个会话结束。 – 2010-08-13 15:39:08
有一两件事你可以做的是实现自己的SessionStateStoreProvider:http://msdn.microsoft.com/en-us/library/ms178587.aspx
在你执行的GetItem的,你会更新自己的当前会话数据,并在您的removeItem实现集合,你可以访问ASP .NET会话数据,因此您可以在以常规方式删除ASP.NET会话之前从您的集合中删除该项目。您可以查询您的集合以查看当前活动的会话。
或者:
Create Procedure dbo.GetCurrentUsers
@ActiveSince DateTime
AS
SELECT U.UserId, U.UserName, M.Email
FROM aspnet_Users U
INNER JOIN aspnet_membership M ON M.UserId = U.UserId
WHERE U.LastActivityDate > @ActiveSince
GO
你会设置:
如果您使用的是ASP.NET成员资格提供,你可以沿着东西线查询数据库@ActiveSince是当前的DateTime减去您的网站上的会话超时。
var sessionState = (System.Web.Configuration.SessionStateSection)
ConfigurationManager.GetSection("system.web/sessionState");
DateTime activeSince = DateTime.Now.AddMinutes(0 - sessionState.Timeout.TotalMinutes);
这将包括谁拥有了你的网站,然后用户留下直线距离,但没有告诉他们是否仍然存在,除非你有你的网页上的脚本,定期发送Ajax调用的方式到服务器说它仍然是开放的。我会建议不要这样做,因为它会增加流量,并且浪费资源而没有真正的收益。
我会在Global.asax中处理这个问题。将Session_Start添加到包含要跟踪的数据的应用程序全局列表(即User,SessionId,StartTime,LastRequestTime)。
当用户第一次访问该站点时,Session_Start将向GlobalList添加一个条目。这将确保每个独特的用户都获得它自己的条目(处理令人讨厌)。如果你愿意,一旦用户登录,你可以更新GlobalList来设置用户信息(姓名,ID等等)。
接下来,让Application_Start启动一个后台线程,通过全局列表并删除任何过期的项目(根据您设置的任何阈值,LastRequestTime-StartTime的TimeSpan)。
如果你想在WebFarm场景中部署它,那么你必须将列表移动到你的数据库。
- 1. 在网站上跟踪横幅展示
- 2. 在网站上跟踪鼠标点击
- 3. 在网站上的php跟踪文章?
- 4. 在ASP.Net网站跟踪
- 5. 跟踪谁上传文件
- 6. 网站跟踪cookies
- 7. Facebook跟踪谁邀请谁
- 8. 如何跟踪其他网站上
- 9. 跟踪网站上的用户
- 10. 在线人谁在网站上
- 11. 我可以跟踪谁在链接或操纵我的网站数据吗?
- 12. 跟踪网站的出站链接
- 13. 如何在使用传统ASP构建的网站上实现事件跟踪
- 14. 跟踪用户在WordPress网站上的活动
- 15. 跟踪访问者在一个网站上的数据ruby rails?
- 16. 在网站上花费的跟踪时间
- 17. 在我的价格跟踪网站上使用mongoDB
- 18. 跟踪用户在网站上的进度
- 19. 使用Backbone路由器在网站上跟踪AdWords的性能
- 20. 在Rails网站上跟踪用户操作
- 21. 如何跟踪在网站上花费的时间
- 22. 跟踪用户在网站上的活动 - 谷歌分析
- 23. 如何跟踪用户在另一个网站上的操作?
- 24. 如何使用Google Analytics在SquareSpace网站上跟踪事件?
- 25. 如何跟踪在网站上打开的文档
- 26. 网页加载时间跟踪网站
- 27. 在iPhone上实现跟踪手势
- 28. Google Analytics(分析)站点搜索移动网站上的跟踪
- 29. 在后台跟踪网页
- 30. Javascript和网上商店跟踪/跨网站会员,怎么办?
部分取决于您对活动的定义。我们可能正在讨论当前会话次数,或上个月登录或X-days内实际贡献者。请提供更多关于您想要衡量的内容的信息。 – kbrimington 2010-08-13 14:27:12