2012-07-29 39 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。