如何在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】:您将会话与Session
s 混淆了...Session
是一个 ASP.NET 类,只要您在应用程序中激活了会话支持(默认情况下处于启用状态,并存储其值),该类可用于每个页面默认在内存中)。但是这些Session
s 超时了;在一段时间不活动后(例如 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中恢复会话的主要内容,如果未能解决你的问题,请参考以下文章
如何使用httpcontext在asp.net中显示会话过期的消息
如何使用 C# 在 ASP.NET Core 3.1 MVC 中使用会话变量