在我写的模块中,我在会话中存储了用户添加到购物车中的项目。 您将如何处理这种情况:用户在会话超时后将新项目添加到购物车中? 我可以重定向到主页,但是即使会话未被使用,我也会导致重定向。比如用户没有登录,或者他的购物车是空的。
如何在应用程序中处理会话超时?
答案 0 :(得分:5)
在这种情况下,我可能不会使用内置的ASP.NET Session提供程序。相反,您可以为客户的购物车会话设置一个持久性cookie,其加密ID映射到存储在数据库中的会话,该会话存储购物车的内容。
这样,您无需担心超时,会话将在cookie的生命周期内继续。
(如果你真的需要使用ASP.NET Session,也许你已经有了使用它的代码,那么你可以将超时设置为一个非常大的数字并配置Session state provider以使用SQL Server。 )
答案 1 :(得分:1)
您的页面可以运行javascript计时器,当时间用完时,页面会重定向到另一个页面,例如login,查询字符串参数作为标志。当使用x标志调用登录屏幕时,购物车将保存到数据库以便安全保存。关键是让超时短于会话超时。
<强>增加:强>
每页上的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";
}
答案 2 :(得分:0)
另一种方法是将购物车存放在cookie中。