页面结束时运行代码

时间:2012-10-31 09:48:43

标签: c# asp.net sql-server

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

我有一个页面在学生登录时加载,在顶部有一个标签,表示他/她已登录的最后一次...此日期存储在一个表格中

我尝试使用代码将

下的global.asax中的日期更新为今天的日期
void Application_End(object sender, EventArgs e)
{

}

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

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

4 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

使用Session_End代替Application_End

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

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

详细了解这些活动here..

答案 2 :(得分:0)

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

如果您需要准确测量上次登录,那么这样做是有道理的,因为Session_End可能会在实际使用完网站后开火一段时间。

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

答案 3 :(得分:0)

您可以使用onbeforeunload活动。

例如。

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

这是示例页面,其中包含示例:onbeforeunload Event Sample