我已经看到了一个类似的问题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访问该数据?
感谢。
答案 0 :(得分:0)
请记住,只有在使用in_proc会话状态模式时才会引发session_end:如果在服务器场上部署Web应用程序,则不会引发它。 无论如何,即使我不知道你想要实现什么,最好在HttpModule中处理会话结束。看看下面的链接:
http://www.codeproject.com/KB/aspnet/SessionEndStatePersister.aspx