【问题标题】:Run code when page ends页面结束时运行代码
【发布时间】:2012-10-31 09:48:43
【问题描述】:

希望有人能帮我解决这个问题...

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

我尝试在

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

}

但是好像我不能在那里使用 SQL 连接

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

【问题讨论】:

  • 在用户注销时执行。
  • 在注销时添加您的代码或添加只是在每个页面加载中添加代码。
  • 现实世界中很少有人点击注销按钮。许多人关闭页面。一般来说,您可以跟踪会话结束,这发生在最后一次用户操作后 20 分钟。但是会话超时值可能会改变。

标签: c# asp.net sql-server


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    使用Session_End 代替Application_End

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

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

    阅读更多关于这些活动的信息here..

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        您可以使用onbeforeunload 事件。

        例如。

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

        这是带有示例的示例页面:onbeforeunload Event Sample

        【讨论】:

          猜你喜欢
          • 2017-05-21
          • 1970-01-01
          • 2021-01-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多