【问题标题】:Membership User.IsOnline definition成员资格 User.IsOnline 定义
【发布时间】:2014-01-09 12:25:45
【问题描述】:

我有一个关于成员资格的问题,更确切地说是 IsOnline 属性。我已经阅读了一些资源,但我仍然不明白它是如何计算的,它是如何工作的,以及它是否正常工作。

所以根据msdn:

如果当前日期和时间减去 UserIsOnlineTimeWindow 属性值早于 用户的 LastActivityDate。

UserIsOnlineTimeWindow 可以在 web.config 中配置,但默认是什么?

上次活动日期我真的不明白上次活动日期是什么?

如果用户没有在网站上做任何事情但他仍然在那里,但他会离线显示怎么办?有没有办法让用户保持在线显示?

用户必须做什么才能更新上次活动日期?

如果有人能给我提供一个真实数字的例子,我将不胜感激。谢谢

【问题讨论】:

    标签: c# asp.net-membership


    【解决方案1】:

    UserIsOnlineTimeWindow 可以在 web.config 中配置,但默认是什么?

    我不知道默认值是什么,但我想如果您打算使用IsOnline 属性的默认行为,那么您至少希望将UserIsOnlineTimeWindow 设置为特定值。

    上次活动日期我真的不明白上次活动日期是什么?

    每当您使用CreateUserValidateUser 方法时,LastActivityDate 属性都会更新为当前的Datetime。您还可以自定义成员的其他方法来更新LastActivityDate,即GetUser()

    如果用户没有在网站上做任何事情但他仍然存在,但他会离线显示怎么办?有没有办法让用户保持在线显示?

    这就是UserIsOnlineTimeWindow 发挥作用的地方:

    public bool IsOnline {
        get 
        {
            return ((Datetime.Now - UserIsOnlineTimeWindow) < LastActivityDate)
            //this is the behavior that the MembershipProvider uses by default
            //as you already mentioned in your question
        }
    }
    

    根据这些信息,您有几个选择:

    1. 用您自己的实现覆盖IsOnline 属性
    2. 在其他 Membership 方法中更新 LastActivityDate 属性

    用户必须做什么才能更新上次活动日期?

    默认情况下,这只会通过使用 CreateUserUpdateUserValidateUser 进行更新,但正如我之前所说,您可以自定义 MembershipProvider 以随时更新该属性。

    【讨论】:

      猜你喜欢
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多