ASP.NET查看成员是否在线

时间:2012-07-29 09:16:43

标签: asp.net asp.net-membership umbraco membership-provider

我正在umbraco中开发一个ASP.NET站点,我需要查看具有给定ID的成员是否在线。我怎么能这样做?

到目前为止,我试图通过这样的方式获得该成员:

Member m = new Member(myID);

但是,如果返回的成员是否已登录,我该如何检查?

编辑:我按照链接,从中提取了以下代码:

var users = Membership.GetAllUsers();

foreach(MembershipUser user in users){
  Response.Write(user.IsOnline.ToString() +"<br/>");
  Response.Write(user.LastActivityDate.ToString() + "<br/>");
  Response.Write(user.LastLoginDate.ToString() + "<br/>");
}

但是,返回的结果显示每个成员的属性isOnline都为true,即使它们不在线。我知道这是因为每当我访问用户时LastActivityDate会自动更新,如下所述:Is it possible to access a profile without updating LastActivityDate?。不幸的是,我没有得到这个问题的解决方案。

我还尝试通过以下方式访问该成员:     MembershipUser m = Membership.GetUser('myID',false); 但即使我将false作为第二个参数,LastActivityDate仍会更新。我该如何解决这个问题?我应该注意,我在本地主机的umbraco 4.7中使用ASP.NET v.4.0。

谢谢!

:编辑结束

祝你好运, Brinck10

2 个答案:

答案 0 :(得分:3)

如果当前日期和时间减去UserIsOnlineTimeWindow属性值早于用户的lastActivityDate,则可以使用显示为true的MembershipUser.IsOnline Property

MSDN page上有一个例子。

相对:
Proper 100% IsOnline implementation for asp.net membership
How to check in ASP.NET if the user is online?
asp.net custom membership provider: IsOnline property

答案 1 :(得分:0)

解决问题的方法:

(1)我在membertype中创建了一个名为lastActivityDate的costum字段。

(2)我在主页上放置了一个宏,将成员的lastActivityDate更新为当前成员在线时的时间。

(3)在验证页面上,我检查了lastActivityDate + CostumBuffer是否大于DateTime.Now。

感谢您的耐心Aristos。