ASP.NET MVC:在Session_End或之前的事件中访问会话数据

时间:2010-12-08 21:13:36

标签: asp.net session-variables sessionend

我已经看到了一个类似的问题here。我有基本相同的问题,但有一点点扭曲。

我正在尝试从Session_End方法中访问Session信息,但是当我到达那里时HttpContext为null,所以我找不到任何真正的方法来实现它;它几乎就像在Session_End激活时已被完全删除。

相关问题中的解决方案说我可以使用this.Session来引用我需要的会话信息,该信息从HttpApplication类访问全局继承的HttpApplication.Session变量。但在我的应用程序中,我们自己在Global中重新定义了Session变量,如下所示:

    public new static HttpSessionState Session
    {
        get
        {
            return HttpContext.Current.ApplicationInstance.Session;
        }
    }

所以对我来说,引用this.Session会尝试从HttpContext中获取信息,这是空的。

所以我猜我有2个问题。首先,是否有事件在Session_End之前但在清除会话数据之前触发?第二,如果第一个问题的答案为否,是否还有办法从Session_End访问该数据?

感谢。

1 个答案:

答案 0 :(得分:0)

请记住,只有在使用in_proc会话状态模式时才会引发session_end:如果在服务器场上部署Web应用程序,则不会引发它。 无论如何,即使我不知道你想要实现什么,最好在HttpModule中处理会话结束。看看下面的链接:

http://www.codeproject.com/KB/aspnet/SessionEndStatePersister.aspx