【问题标题】:Check is aspx session expired via jquery ajax request检查是通过 jquery ajax 请求过期的 aspx 会话
【发布时间】:2016-01-20 19:33:06
【问题描述】:

我使用 asp.net 来管理我网站的会话状态。我还使用 jquery 和 $.ajax(...) 进行同步和异步请求。

通常,在 asp.net 中,如果用户会话超时,可以通过全部或部分回发来检测。但是,假设由于我使用 jquery ajax 调用静态 c# web 方法而没有发生部分或全部回发。如果会话超时,最好知道什么?

【问题讨论】:

    标签: c# jquery asp.net ajax session


    【解决方案1】:

    我会创建一个 javascript 间隔来不时发出 ajax 请求,如下所示:

    <script>
    $(document).ready(function () {
        setInterval(function (){
            $.ajax({
                url: 'WebMethodhere',
                type: 'GET',
                success: function (result) {
                    if(result!='true')
                    {
                        //It means that the Session expired, so do somethig
                    }
                }
            })
        },3000);
    });
    </script>
    

    我在这个例子中使用了 3000 毫秒,但时间由你决定。

    您的网络方法可能非常简单:

    if(Session["WhateverSession"]==null)
    {
        return false;
    }
    else
    {
        return true;
    }
    

    【讨论】:

    • 如果我每 xxx 秒从服务器查询一次会话,它是否会在每次调用时更新会话?简而言之,AJAX 调用是否会延长/更新会话时间。
    • 简单:是的,确实如此 - stackoverflow.com/questions/10370110/…
    • 答案是不简单。有条件(无论是否无 cookie)。您必须阅读完整的主题,尤其是 Pankaj 及其 cmets 以及 ranjitkumars.wordpress.com/2010/03/02/… 的答案
    • 并没有说这很简单,只是我给你一个“简单”的答案:是的(即使有一些例外情况)。但是你应该自己搜索一下,因为当你问这个问题时,我就是这么做的……
    • 我很久以前就读过了。要求该评论只是为了让 OP 提问者和其他读者意识到 yes 的例外情况。无论如何,好的(重新)搜索。
    【解决方案2】:

    有几种方法可以实现它。

    方法 #1:创建一个通用处理程序并实现 IReadOnlySessionState 接口以从该处理程序访问会话变量。使用 ajax 获取请求并访问此通用处理程序,该处理程序提供会话是否处于活动状态。

    方法 #2:使用 [WebMethod] 装饰页面的公共方法(使用 System.Web.Services)并通过 ajax get 请求访问此方法,该请求提供会话是否处于活动状态。

    但所有这些方法都应该仅用于检查会话是否处于活动状态或已过期。但如果会话处于活动状态,它将更新您的会话 - 这可能是不可取的。请也检查该选项。

    【讨论】:

    • 您还可以在您的页面继承自的基类中声明 WebMethod,以防止必须在各处创建处理程序或重复代码。
    • AJAX 调用是否延长/更新会话时间。
    • 会话在每次向服务器请求时更新,浏览器提供服务器用来访问会话值的 ASP.NET_SessionId (Cookie),这是默认行为,ajax 或简单页面请求或回发。
    【解决方案3】:

    最简单的解决方案是每隔一段时间强制发回一个帖子。

    <meta http-equiv="refresh" content="1800">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多