代码之家  ›  专栏  ›  技术社区  ›  Biff MaGriff

使用Ajax时如何防止会话过期?

  •  2
  • Biff MaGriff  · 技术社区  · 15 年前

    我有一个.NET 3.5网站,它使用Windows身份验证,并使用我的基本母版页类的预呈现上的元标记使会话过期。

    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);
        if (Response.ContentType == "text/html")
            this.Page.Header.Controls.Add(new LiteralControl(
                String.Format("<meta http-equiv='refresh' content='{0};url={1}'>",
                SessionLengthMinutes * 60, SessionExpireDestinationUrl)));
    }
    

    这对于完成完整的回发的页面很有效。然而,在我的应用程序中有几个页面,用户在更新面板内做了大量的工作。我公司的规定是暂停15分钟。这意味着,在更新面板页面内工作15分钟后,用户将被重定向到应用程序启动页面。

    是否有方法重置或扩展异步回发上的元标记?或者也许是一个更好的方法来完成这一切?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Barry Kaye    15 年前

    一个更好的完全实现这一点的方法是使用JavaScript。如果页面已添加书签,这将防止与元刷新相关的问题。

    使用此javascript代替页面元刷新:

    <script type="text/javascript">
        var _timerID = setTimeout("window.location='splash-url'", 900000); //15 mins
    </script>
    

    当您从更新面板发出请求时,请使用此javascript:

    <script type="text/javascript">
        clearTimeout(_timerID);
        _timerID = setTimeout("window.location='splash-url'", 900000); //15 mins
    </script>
    
        2
  •  0
  •   Steven Sudit    15 年前

    在过去,我在响应Ajax调用的方法上使用了webMethod(enableSession=true)属性

        3
  •  0
  •   Shackles    15 年前

    您也可以使用Ajax请求保持会话的活动状态。只要用户在浏览器中打开了您的页面,这将起作用。 见 http://808.dk/?code-ajax-session-keepalive