【问题标题】:Close the browser when session expires? asp.net会话到期时关闭浏览器?网
【发布时间】:2013-03-27 22:00:28
【问题描述】:

我有一个 ASP.NET 网页,在会话到期之前有 60 秒的空闲时间窗口。有没有办法(通过 asp 或后面的 c# 代码)关闭 浏览器 - 或者最好只关闭选项卡 - 在 Session_End 事件中?

我看到很多关于 SO 的帖子想要做相反的事情(在浏览器关闭时结束会话),但不是我需要的。

【问题讨论】:

  • 我认为你应该放弃这个想法......
  • 你可以使用javascript计时器。
  • 大多数网上银行应用程序使用客户端javascript计时器并重定向到会话过期页面。
  • @Johnny5 我希望可以,但这是客户要求。
  • @iamjordanspain 这就是我的想法。作为程序员,我们工作的一部分是向客户解释为什么他们不能做某些事情……自动关闭窗口对最终用户来说可能非常烦人。

标签: asp.net session code-behind


【解决方案1】:

您无法关闭浏览器,但可以通过以下方式重定向到“会话已过期”页面:

    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);
        this.PageHead.Controls.Add(new LiteralControl(
            string.Format("<meta http-equiv='refresh' content='{0};url={1}'>", 
            Session.Timeout * 60, "SessionExpired.aspx")));
    }

【讨论】:

  • 如果用户有多个打开的窗口,并且实际上会话在其他窗口中保持活动状态怎么办?
  • 我已经尝试过了,但是在运行 SessionExpired 的 Page_Load 事件时遇到了问题。如果直接启动,我放在那里的任何代码都可以工作,但如果页面被重定向到,它不会关闭。有什么想法吗?
  • 为什么要关闭浏览器?我同意如果浏览器刚刚关闭会令用户发疯。如果你真的想的话,你可以在 javascript 中使用window.close();
  • 客户特别要求它在闲置时关闭。我会尝试说服他们同意锁定/注销。感谢您的帮助
【解决方案2】:

你可以看看这个例子——Alert Session Time out in ASP.NET

它基本上在超时之前警告用户(例如,美国银行网站)。一旦达到时间限制,将用户重定向到注销页面。

仅供参考:如果您在没有警告的情况下重定向或关闭页面,用户会生气。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 2013-11-17
    • 2013-08-11
    • 2015-08-12
    • 1970-01-01
    • 2015-04-23
    相关资源
    最近更新 更多