在 Session_End 事件中,如何获取 asp.net 中 Session 变量的值?

8
如果我将一个值存储在会话变量中。
    Session["Int"] = 100;

在Session_End事件中,它将是null还是100?
void Session_End(object sender, EventArgs e)
{
      object objInt = Session["Int"];          // Null or 100 ?
}

意思是,Session_End事件会在销毁会话中的所有内容之后还是就在其之前触发?

3
为什么不在该方法上设置断点,看看在命中断点时该值是多少? - RePierre
同时也请查看HttpContext.Current的相关内容:https://dev59.com/TnI-5IYBdhLWcg3wEEBV - MSTdev
2个回答

13

它是100。

要自行测试,只需将ASP.NET应用程序文件global.asax添加到您的项目中,并处理Session_StartSession-End事件:

void Session_Start(object sender, EventArgs e)
{
   Session["Int"] = 100;          // 100
}

void Session_End(object sender, EventArgs e)
{
    object objInt = Session["Int"];  // it is still 100 here
}

您可以通过 Session.Abandon() 方法(或者在会话过期时)来终止一个会话。

protected void Page_Load(object sender, EventArgs e)
{
    Session.Abandon();  // after this Session.End is called
}

还要检查HttpContext.Current,可以参考这个链接:https://dev59.com/TnI-5IYBdhLWcg3wEEBV - MSTdev

0

我发现Session["Int"]将会是100。我将会把session的超时时间设置为1分钟,并在该事件中设置一个断点。


好吧,当我发布我的答案时,已经有人回答了,所以这是一个巧合。 - v s

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接