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); しかし、2 番目のパラメーターとして false を指定しても、LastActivityDate は引き続き更新されます。どうすればこれを回避できますか? 私は、localhost の umbraco 4.7 で ASP.NET v. 4.0 を使用していることに注意してください。

ありがとう!

:編集終了

よろしく、 Brinck10

4

2 に答える 2

3

現在の日付と時刻から UserIsOnlineTimeWindow プロパティの値を差し引いた値がユーザーの lastActivityDate より前の場合に true を示す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 に答える