1

嘿希望有人可以帮助我解决这个问题...

我有一个学生登录时加载的页面,顶部有一个标签,代表他/她上次登录的时间......这个日期存储在一个表格中

我尝试使用将日期更新为 global.asax 下的今天日期的代码

void Application_End(object sender, EventArgs e)
{

}

但似乎我不能在那里使用 SQL 连接

一旦用户通过退出关闭站点,如何将存储在表中的日期更改为 (todays.date)?

4

4 回答 4

3

Application_End这不是合适的地方。当您的整个应用程序(而不仅仅是用户会话)关闭时,将调用此方法。

最接近你想要的东西可能是Session_End. 但请注意,这仅在用户会话到期后才会触发,通常是在浏览器关闭后 20 分钟左右。

不,不幸的是,您无法可靠地检测到用户已经关闭了他的浏览器窗口。如果您想摆弄 JavaScript,有一些解决方法可能在大多数情况下都有效:

于 2012-10-31T09:51:56.630 回答
1

Session_End改为使用Application_End

Application_End是特定于应用程序的,对整个应用程序都是通用的,并且会触发一次。

Session_End是特定于用户的,它会在每个用户的范围内触发一次..所以正确的方法是使用这种方式..

在此处阅读有关这些事件的更多信息..

于 2012-10-31T09:50:49.843 回答
0

根据您的身份验证的工作方式(cookie、基于会话的等),在用户成功登录后立即执行此操作可能会更容易。

如果您需要准确测量最后一次登录,那么这样做是有意义的,因为Session_End可能会在他们实际使用完网站后的一段时间内触发。

如果您确实希望使用Session_End,您可以始终存储用户在会话中登录的时间,然后在Session_End事件触发时更新数据库。

于 2012-10-31T10:07:34.520 回答
0

您可以使用onbeforeunload事件。

例如。

    <script type="text/javascript">
        window.onbeforeunload = function () 
        {
            //do something
        }
    </script>

这是带有示例的示例页面:onbeforeunload 事件示例

于 2012-10-31T10:25:11.837 回答