嘿希望有人可以帮助我解决这个问题...
我有一个学生登录时加载的页面,顶部有一个标签,代表他/她上次登录的时间......这个日期存储在一个表格中
我尝试使用将日期更新为 global.asax 下的今天日期的代码
void Application_End(object sender, EventArgs e)
{
}
但似乎我不能在那里使用 SQL 连接
一旦用户通过退出关闭站点,如何将存储在表中的日期更改为 (todays.date)?
嘿希望有人可以帮助我解决这个问题...
我有一个学生登录时加载的页面,顶部有一个标签,代表他/她上次登录的时间......这个日期存储在一个表格中
我尝试使用将日期更新为 global.asax 下的今天日期的代码
void Application_End(object sender, EventArgs e)
{
}
但似乎我不能在那里使用 SQL 连接
一旦用户通过退出关闭站点,如何将存储在表中的日期更改为 (todays.date)?
Application_End
这不是合适的地方。当您的整个应用程序(而不仅仅是用户会话)关闭时,将调用此方法。
最接近你想要的东西可能是Session_End
. 但请注意,这仅在用户会话到期后才会触发,通常是在浏览器关闭后 20 分钟左右。
不,不幸的是,您无法可靠地检测到用户已经关闭了他的浏览器窗口。如果您想摆弄 JavaScript,有一些解决方法可能在大多数情况下都有效:
Session_End
改为使用Application_End
Application_End
是特定于应用程序的,对整个应用程序都是通用的,并且会触发一次。
Session_End
是特定于用户的,它会在每个用户的范围内触发一次..所以正确的方法是使用这种方式..
在此处阅读有关这些事件的更多信息..
根据您的身份验证的工作方式(cookie、基于会话的等),在用户成功登录后立即执行此操作可能会更容易。
如果您需要准确测量最后一次登录,那么这样做是有意义的,因为Session_End
可能会在他们实际使用完网站后的一段时间内触发。
如果您确实希望使用Session_End
,您可以始终存储用户在会话中登录的时间,然后在Session_End
事件触发时更新数据库。
您可以使用onbeforeunload事件。
例如。
<script type="text/javascript">
window.onbeforeunload = function ()
{
//do something
}
</script>
这是带有示例的示例页面:onbeforeunload 事件示例