【问题标题】:How to execute a Method when a User close the Browser or visit another Page?当用户关闭浏览器或访问另一个页面时如何执行方法?
【发布时间】:2011-09-30 09:18:16
【问题描述】:

我使用 c# asp.net 4 web.forms。

我有一个页面(我们称之为 X)我只需要在这种情况下在 X 上执行一个方法:

  • 当用户访问其他网址时,直接在浏览器中输入或点击页面上的其他链接。
  • 当用户从我的 Web 应用程序中注销时。
  • 当用户关闭浏览器时。

目前我正在尝试Page_Unload Event,但至于 MSDN“从内存中卸载服务器控件时发生”,我无法使其按预期工作。

查看文档我找不到适合我的页面的活动

有哪些可能的替代解决方案?感谢您抽出宝贵时间。

【问题讨论】:

标签: c# asp.net page-lifecycle


【解决方案1】:

这根本不可能。

HTTP 要求浏览器首先从服务器请求资源 - 没有这个,服务器将无法做任何事情。关闭浏览器不会向服务器请求任何内容。

您唯一的选择是使用会话 cookie,根据MSDN

当用户关闭浏览器时,cookie被丢弃。

因此,在每个请求上检查这些将允许服务器知道用户之前是否关闭了浏览器。

有一些讨厌的 javascript 解决方案,但这些都是非常糟糕的。

【讨论】:

  • 感谢您的回答,对于您的建议,我想避免使用 javascript 解决方案。我没有考虑cookies的方法,这似乎是一个合理的解决方案。
  • 这里是JavaScript solution
【解决方案2】:

看看 javascript window.OnBeforeUnload 处理程序:

How can I override the OnBeforeUnload dialog and replace it with my own?

这样你可以在用户离开你的页面之前执行一些javascript。

【讨论】:

    【解决方案3】:
    • 当用户访问其他网址时,直接在浏览器中输入或点击 页面上的另一个链接

    您可以编写一些客户端脚本。 javascript onbeforeunload Event 可能会对您有所帮助。

    • 当用户从我的 Web 应用程序中注销时。

    不明白为什么这是个问题。这肯定是服务器端事件,不是吗?

    • 当用户关闭浏览器时

    这是个问题。停电时应该怎么办?还是浏览器崩溃?或者...

    【讨论】:

    • @GibboK 是的,有可能...取决于您构建的用户身份验证的逻辑。
    猜你喜欢
    • 1970-01-01
    • 2019-09-24
    • 2012-03-03
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    相关资源
    最近更新 更多