asp.net-mvc - session 结束时访问成员(member)用户

标签 asp.net-mvc asp.net-membership session-state membership-provider httpcontext

我目前正在尝试编写一些代码,以便在用户放弃 session (通过超时或注销)后进行一些整理,但希望访问 User 对象,以便我知道该 session 属于谁到。

不幸的是 HttpContext 为空,所以我无法直接访问 HttpContext.User 或 HttpContext.User.IsInRole 甚至身份验证 cookie。我理解这背后的原因,但想知道当 session 超时时是否有其他方法可以访问此信息?

除了复制 session 中的一些信息的明显答案之外。

谢谢。

最佳答案

您可以使用Global.asaxSession_End事件。当 session 过期时,会自动调用 Session_End 事件。

问题是在没有当前请求的情况下调用 Session_End 事件。结果,Session_End 中的 HttpContext.Current 为 null。

如果您想获取用户信息,则需要在用户成功登录后立即将其保存在 Session 中。

private void Session_End(object sender, EventArgs e)
{
    // Code that runs when a session ends. 
    // Note: The Session_End event is raised only when the sessionstate mode
    // is set to InProc in the Web.config file. If session mode is set 
    // to StateServer or SQLServer, the event is not raised.

    var userName = Session["UserName"];
    var sessionId = Session.SessionID;
}

enter image description here

关于asp.net-mvc - session 结束时访问成员(member)用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20107196/

相关文章:

C#字符串不包含

c# - 为 StringLength 属性使用参数

asp.net-mvc - 具有多个数据库或提供程序的 MVC4 简单成员身份验证

php - PHP 重定向后检索 $_SESSION 值

php - 是否有人在用户代码(非本地)中创建了类似 PHP Session 的类?

asp.net - 'System.Data.Entity.Internal.AppConfig' 的类型初始值设定项引发异常

c# - 在 asp.net mvc 的同一 View 中列出和创建

c# - ViewBag 空空如也

asp.net - 同时使用多个 ASP.NET 角色提供程序

iis-7 - IE8 不保留 session 变量