c# - Membership.GetUser(userName, isOnline) 总是更新 LastActivityDate

标签 c# asp.net

我似乎无法找到原因或位置,但即使我将 Membership.GetUser(userName, false) 设置为 false,LastActivityDate 也会始终更新,因此它不会更新 LastActivityDate。我在其他任何地方也没有访问 GetUser 的任何其他代码。所以我在配置文件中创建了一个名为 LastActivity 的属性,这有点像,但我不明白为什么每次刷新页面时 GetUser 总是更新 LastActivityDate。

    private void SwitchMode(Mode mode)
{
    ProfileCommon profile = Profile.GetProfile(UserName);
    MembershipUser mu = Membership.GetUser(UserName, false);

    bool isOnline = minutes(DateTime.Now - profile.LastActivity) >= Membership.UserIsOnlineTimeWindow ? false : true;

    lblActivity.Text = mu.LastActivityDate.ToString();
    switch (mode)
    {
        case global::Mode.Readonly:
            profileAvatar.Visible = true;
            profileDetails.Visible = true;
            profileForm.Visible = false;

            lblUserName.Text = UserName;

            if (profile.Website != null)
            {
                lblWebsite.Visible = false;
                lnkWebsite.Visible = true;
            }
            else
            {
                lblWebsite.Visible = true;
                lnkWebsite.Visible = false;
            }

            lblSummary.Text = profile.Summary;
            lnkWebsite.Text = profile.Website == string.Empty ? "-" : profile.Website;
            lnkWebsite.NavigateUrl = profile.Website == string.Empty ? "-" : profile.Website;
            lblLocation.Text = profile.Address.StateRegion + ", " + profile.Address.Country;
            lblFullname.Text = profile.FirstName + " " + profile.LastName;
            lblEmail.Text = profile.ShareEmail && mu != null ? mu.Email : "-";
            lblGender.Text = profile.Gender == 0 ? "Male" : profile.Gender == 1 ? "Male" : "Female" ;
            lblAge.Text = Convert.ToString(Math.Floor(DateTime.Today.Subtract(profile.BirthDate).TotalDays / 365.25));

            lblMemberfor.Text = PrintTimeSpan1(DateTime.Now - mu.CreationDate);
            lblVisited.Text = profile.Visits.ToString();
            lblSeen.Text = PrintTimeSpan1(DateTime.Now - profile.LastActivity) + " ago";
            lblProfileViews.Text = profile.Views.ToString();

            if (HttpContext.Current.User.Identity.Name != UserName)
            {
                profile.Views += 1;
                profile.Save();                    
            }


            if (isOnline)
            {
                lblStatus.Text = "online";
            }
            else
            {
                lblStatus.Text = "offline";
            }


            break;
        case global::Mode.Edit:
            profileAvatar.Visible = true;
            profileDetails.Visible = false;
            profileForm.Visible = true;
            lblUserName.Text = UserName;

            txtFirstName.Text = profile.FirstName;
            txtLastName.Text = profile.LastName;
            radioGender.SelectedIndex = profile.Gender;
            ddlDay.SelectedValue = profile.BirthDate.Day.ToString();
            ddlMonth.SelectedValue = profile.BirthDate.Month.ToString();
            ddlYear.SelectedValue = profile.BirthDate.Year.ToString();
            txtWebsite.Text = profile.Website;
            ddlOccupation.SelectedValue = (profile.Occupation == string.Empty ? "0" : profile.Occupation);
            txtStreet.Text = profile.Address.Street;
            txtZipCode.Text = profile.Address.ZipCode;
            txtStateRegion.Text = profile.Address.StateRegion;
            ddlCountry.SelectedValue = (profile.Address.Country == string.Empty ? "0" : profile.Address.Country);
            txtAvatar.Text = profile.Forum.AvatarUrl;
            txtForumSignature.Text = profile.Forum.Signature;
            chkNewsLetter.Checked = profile.NewsLetter;
            chkShareEmail.Checked = profile.ShareEmail;
            txtSummary.Text = profile.Summary;

            break;
        case global::Mode.Insert:
            profileAvatar.Visible = false;
            profileDetails.Visible = false;
            profileForm.Visible = true;
            break;
    }
}

最佳答案

您对 Profile.GetProfile(UserName) 的调用正在更新日期。我有同样的问题。在这里查看我的问题:Is it possible to access a profile without updating LastActivityDate?基本上,您必须修改获取配置文件详细信息的存储过程并删除一小段代码。

关于c# - Membership.GetUser(userName, isOnline) 总是更新 LastActivityDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9611005/

相关文章:

c# - 如何删除电话号码的格式?

c# - FizzlerEx/HtmlAgilityPack QuerySelectorAll 不工作

c# - Web 服务和 nunit 测试

asp.net - 如何将所有 httpErrors 重定向到自定义 url?

c# - 异步下载文件到客户端

c# - 如何在不使用 Rx 框架的情况下限制事件的速度

c# - C# 中的多态返回类型

c# - 从 asp.net mvc 站点中的外部站点获取帖子响应

c# - 内存不足,无法创建 Excel 工作簿

asp.net - 理想的开发/测试/质量保证开发环境