Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在asp.net中如何在一段时间后自动清除购物车_C#_Asp.net_Sql Server - Fatal编程技术网

C# 在asp.net中如何在一段时间后自动清除购物车

C# 在asp.net中如何在一段时间后自动清除购物车,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我创建了一个电子商务网站。我的问题是,如果用户在购物车中添加了物品后离开了网站,无论他是否登录,我想在认证期后自行清除购物车 我的Global.ascx代码是: void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs e) { ProfileCommon anonymousProfile = Profile.GetProfile(e.AnonymousID); if (anonymousProf

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

我的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();
}
但我不知道该怎么做。请帮帮我。 谢谢。

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


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

配置文件用于跨会话或跨登录持久化数据

您应该使用会话来存储此用户的购物车信息-

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

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

Session["ShoppingCart"] = new ShoppingCartExample.Cart();

建议您使用会话存储“购物车”,并设置会话的“超时”,即使用户未登录,也可以购买商品。这是客户的要求。不知道你的意思,是要求用户可以购买物品,即使用户未登录?如果是这样,你可以在会话中存储购物车,“会话”不仅仅用于存储用户登录信息。这并不完全合适,由于缓存对所有用户都可用,因此您需要适当地为insert设置密钥。会话似乎是一个更明智的选择,因为它是针对每个用户的,并且会自动过期。当然,对于缓存中的每个购物车,您都需要一个唯一的密钥。我想我的观点是,为什么要使用所有用户都可能访问的机制来存储用户特定的信息(如果存在编码错误)当有一个内置的机制时,信息只能由关联的用户访问。因为如果会话不能在PROC中,当cart被清除以执行代码时,您没有事件来控制。在缓存中,您可以在数据过期时配置回调。这是非常有用的。