2

我正在 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 都会自动更新,如此处所述:是否可以在不更新 LastActivityDate 的情况下访问个人资料?. 不幸的是,我没有得到这个问题的解决方案。

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

谢谢!

:编辑结束

最好的问候, Brinck10

4

2 回答 2

3

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

MSDN 页面上有一个示例。

相对:
asp.net 成员的正确 100% IsOnline 实施
如果用户在线,如何检查 ASP.NET?
asp.net 自定义成员资格提供程序:IsOnline 属性

于 2012-07-29T10:51:32.703 回答
0

问题的解决方案:

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

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

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

感谢您的耐心亚里斯托斯。

于 2012-08-11T07:47:05.503 回答