如何在asp.net中恢复会话

Posted

技术标签:

【中文标题】如何在asp.net中恢复会话【英文标题】:how to restore session in asp.net 【发布时间】:2013-09-06 14:46:13 【问题描述】:

我在 .net 4.0 中创建了一个网站,用户首先登录并重定向到仪表板页面,登录后用户面板中有 8 个页面,母版页面中有一个注销按钮。我想存储用户注销的页面以及下次登录时,他的会话将被恢复(重定向到他注销的同一页面)。 任何人都可以给我任何提示??

【问题讨论】:

“会话恢复”是指只希望用户自动返回上次离开的页面,还是还希望恢复会话值?? 我不确定会话是否是存储此信息的正确方式。我可能会在数据库中执行此操作,或者在 cookie/jStorage 对象中执行此操作,并在使用 javascript 登录时重定向.. @RoyDictus 我只希望用户自动返回上次离开的页面 无论用户使用哪台机器/浏览器,您都想要吗?我的意思是,假设我今天在工作中使用您的应用程序,明天我在家中登录您的应用程序。然后会发生什么? @RoyDictus 我想将会话值存储在数据库中,这样用户登录的位置无关紧要 【参考方案1】:

您将会话与Sessions 混淆了...Session 是一个 ASP.NET 类,只要您在应用程序中激活了会话支持(默认情况下处于启用状态,并存储其值),该类可用于每个页面默认在内存中)。但是这些Sessions 超时了;在一段时间不活动后(例如 15 分钟),服务器会清除内存。

您的意思只是一个会话:用户登录、执行操作然后注销。

为了在他注销时自动返回到他所在的最后一页,您需要做的就是让“注销”按钮的代码将Request.Uri.AbsoluteUri 字符串存储在数据库中。因此,只需在您的代码隐藏中将该按钮的 Click 事件处理程序与用户 ID 一起存储该值。

然后登录按钮的 Click 事件背后的代码可以简单地检索该值并将 Response.Redirect 检索到该 Uri。

【讨论】:

感谢 Roy,您的回答正是我想要的,感谢您更好地解释答案。【参考方案2】:

你可以使用:

Request.Url.AbsoluteUri

并将其存储在会话中。

Session["LastVisitedPage_" + userId] = Request.Url.AbsoluteUri;

【讨论】:

感谢 Darren 为我所做的回答工作,roy 也为您的回答提供了更好的解释【参考方案3】:

您可以使用 Request.Url 来获取当前页面的 url。当用户单击注销按钮时,将当前 url 存储在数据库中。下次用户登录时,从数据库中检索 url 并重定向到它。

【讨论】:

感谢瑞恩重播【参考方案4】:

退出:

 Session.abandon();

存储会话:

 Session["name"] = Request.Url.AbsoluteUri;

【讨论】:

以上是关于如何在asp.net中恢复会话的主要内容,如果未能解决你的问题,请参考以下文章

如何解决session时间过期

如何在 jquery 方法中获取 asp.net 会话值?

如何使用httpcontext在asp.net中显示会话过期的消息

如何使用 C# 在 ASP.NET Core 3.1 MVC 中使用会话变量

如何在 http 和 https 之间共享 asp.net 会话

如何最好地检测 ASP.NET 过期会话?