Session_End 事件下的代码当 timeout失效后还会连续执行?
程序一运行Default.aspx 单击Button3 按钮后
页面上会显示 现在Application 的值是:1
一分钟后,单击Button3 按钮后
页面上会显示 现在Application 的值是:2
再过一分钟后,单击Button3 按钮后
页面上会显示 现在Application 的值是:3
再过一分钟后,单击Button3 按钮后
页面上会显示 现在Application 的值是:4
问题是:
Session_End 事件下的代码当 timeout失效后还会连续执行?
具体测试代码如下:
在Web.config文件中设置
<system.web>
<sessionState timeout="1"/>
</system.web>
在Global.asax文件中:
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
Application["tem2"] =1;
}
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
Application["tem2"] =1+Int16.Parse(Application["tem2"].ToString());
}
在 Default.aspx文件中
protected void Button3_Click(object sender, EventArgs e)
{
Response.Write(" 现在Application 的值是:"+Application["tem2"].ToString());
}
Session对象有以下两个事件:
1) Start事件:在创建会话时发生。
2) End事件:在会话结束时发生。需要说明的是,当用户在客户端直接关闭浏览器退出Web应用程序时,并不会触发Session_End事件,因为关闭浏览器的行为是一种典型的客户端行为,是不会被通知到服务器端的。Session_End事件只有在服务器重新启动、用户调用了Session_Abandon()方法或未执行任何操作达到了Session.Timeout设置的值(超时)时才会被触发。 --------------------编程问答-------------------- timeout 已设置为1分钟了,但
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
Application["tem2"] =1+Int16.Parse(Application["tem2"].ToString());
}
为什么还是每隔一分钟会执行一次? --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 为什么会这样子啊? --------------------编程问答-------------------- Session_End不就是在会话结束时执行的吗?一分钟过后就执行了Session_End中的代码了,Application["tem2"]增1 --------------------编程问答-------------------- 但是再过一分钟后又会自动再执行一次,为什么啊?
补充:.NET技术 , ASP.NET