我正在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
答案 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。