2012-07-29 73 views
2

我正在用umbraco开发一个ASP.NET站点,我需要看看给定ID的成员是否在线。我怎样才能做到这一点?ASP.NET看看会员是否在线

到目前为止,我已经试过这么让成员:

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是真实的每一个成员,即使他们不在线。我知道这是因为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

回答

3

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

上有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

+0

Aristos,请参阅我的编辑! – 2012-07-29 11:55:24

+0

@FrederikBrinckJensen请参阅MSDN页面上的示例,您需要获取所有在线用户并找到您要查找的用户。 (并非100%准确) – Aristos 2012-07-29 11:57:52

+0

对不起,但我已阅读MSDN页面并尝试了他们的示例,但我仍然不明白。看到我的编辑。 – 2012-07-29 12:30:50

0

的解决问题的方法:

(1)I中制成称为lastActivityDate的membertype一个costum字段。

(2)我置于母版宏,更新会员的lastActivityDate给定的成员是在线当前时间。

(3)在确认页面我检查,如果lastActivityDate + CostumBuffer比DateTime.Now更大。

感谢您的耐心Aristos。