处理会话超时丢失的数据

本文关键字:数据 会话 超时 处理 | 更新日期: 2023-09-27 18:15:38

在我编写的一个模块中,我将用户添加到购物车中的商品存储在会话中。您将如何处理这种情况:用户在会话超时后向购物车中添加新商品?
我可以重定向到主页,但然后我导致重定向发生,即使会话没有在使用。比如当用户没有登录,或者他的购物车是空的。

如何处理应用程序中的会话超时?

处理会话超时丢失的数据

在这种情况下,我可能不使用内置的ASP。. NET会话提供程序。相反,您可以为客户的购物车会话设置一个持久cookie,该cookie具有一个加密的ID,该ID映射到存储在数据库中的会话,该数据库存储购物车的内容。

这样,您就不需要担心超时,会话将在cookie的生命周期内继续。

(如果你真的需要使用ASP。. NET会话,也许你已经有了使用它的代码,那么你可以将超时设置为一个非常大的数字,并配置会话状态提供程序使用SQL Server

你的页面可以有一个javascript计时器运行,当时间用完的页面被重定向到另一个页面,说登录,查询字符串参数作为标志。当使用x标志调用Login屏幕时,为了安全起见,将购物车保存到数据库中。关键是要使超时时间短于会话超时。

补充道:

每一页的Javascript:

<body onload="PageLoad();">
<script type="text/javascript">
    function PageLoad() 
    {
        var t = setTimeout("ExceuteTimeOutTransfer()", 15000);
    }
    function ExceuteTimeOutTransfer() 
    {
        window.location.href = "http://localhost/webplaying/Login.aspx?timeout=Y";
    }
</script>

登录页面代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.QueryString["timeout"] != null)
    {
        if (Request.QueryString["timeout"].ToUpper() == "Y")
        {
            SaveCart();
        }
    }
}
private void SaveCart()
{
    lblResult.Text = "Cart Saved";
}

另一种方法是将购物车存储在cookie中。