4

我已经看到了与此处发布的问题类似的问题。我有基本相同的问题,但有一个小转折。

我正在尝试从 Session_End 方法中访问 Session 信息,但是当我到达那里时 HttpContext 为空,所以我没有找到任何真正的方法来获得它;几乎就像在 Session_End 触发时它已经被完全擦除了一样。

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

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

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

所以我想我有2个问题。首先,是否有在 Session_End 之前但在 Session 数据被清除之前触发的事件?其次,如果第一个问题的答案是否定的,是否还有办法从 Session_End 访问该数据?

谢谢。

4

1 回答 1

0

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

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

于 2011-04-07T09:08:56.737 回答