2

我创建了一个电子商务网站。我的问题是,如果用户在购物车中添加商品后离开网站,无论他是否登录,我都想在一段时间后自行清除购物车。

我的 Global.ascx 代码是:

void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs e)
{
    ProfileCommon anonymousProfile = Profile.GetProfile(e.AnonymousID);
    if (anonymousProfile.SCart != null)
    {
        if (Profile.SCart == null)
            Profile.SCart = new ShoppingCartExample.Cart();

        Profile.SCart.Items.AddRange(anonymousProfile.SCart.Items);

        anonymousProfile.SCart = null;
    }

    ProfileManager.DeleteProfile(e.AnonymousID);
    AnonymousIdentificationModule.ClearAnonymousIdentifier();
}

但我不知道该怎么做。请帮我。谢谢。

4

2 回答 2

1

您可以使用System.Web.Caching.Cache来缓存购物车。您可以使用绝对或滑动过期来控制购物车在缓存中的时间段。

使用缓存,只需检索购物车,如果返回 null,则缓存已过期(表示清除购物车)。

于 2013-10-23T08:49:06.973 回答
0

配置文件用于跨会话或跨登录保留数据。

您应该使用 session 来存储此用户的购物车信息 - http://msdn.microsoft.com/en-us/library/ms178581.aspx

会话是存在一定时期的临时信息存储。由于会话自动过期;一段时间后,购物车将被清除。

会话可以存储您需要的任何信息,并且绝不限于登录或身份验证信息。

Session["ShoppingCart"] = new ShoppingCartExample.Cart();
于 2013-10-23T09:00:57.727 回答