【问题标题】:session variables timeout in asp.net appasp.net 应用程序中的会话变量超时
【发布时间】:2011-06-04 01:25:29
【问题描述】:

在我的网络应用程序中,我使用了一些会话变量,这些变量在我登录时设置:

例如Session("user_id") = reader("user_id")

我通过我的应用程序使用它。

当会话变量超时时,这主要是在连接数据库时抛出错误,因为某些查询需要session("user_id")

如何设置我的会话变量,以便在它们超时后进入登录页面,或者如何至少增加可用的时间长度?

【问题讨论】:

    标签: asp.net session-variables session-timeout


    【解决方案1】:

    我猜您正在使用表单身份验证。这里的诀窍是确保您的表单身份验证在会话之前过期。

    我在这个答案中写了这个:

    How to redirect to LogIn page when Session is expired (ASP.NET 3.5 FormsAuthen)

    例如:

    配置您的表单身份验证 - 这会将超时设置为 60 分钟:

    <authentication mode="Forms">
        <forms defaultUrl="~/Default.aspx"
            loginUrl="~/Login.aspx"
            slidingExpiration="true"
            timeout="60" />
    </authentication>
    

    延长会话到期时间:

    <sessionState 
        mode="InProc" 
        cookieless="false" 
        timeout="70"/>
    

    在您后面的 Login.aspx 代码中,您还可以执行 Session.Clear(); 以在分配会话值之前删除过时的会话数据。

    【讨论】:

      【解决方案2】:

      过去,我在每个页面(登录页面例外)上使用了一个基本页面或母版页面,用于读取会话令牌以查看用户当前是否登录。

      如果它读取到 null,它会保存当前 url 并重定向到登录页面。

      登录后它会读取保存的 url 并将用户重定向回请求的页面。

      增加会话超时值是 IIS 中的一项设置。

      【讨论】:

        【解决方案3】:

        如何设置我的会话变量,以便在超时后进入登录页面

        检查它们是否为 = null 执行Response.Redirect("Home.aspx");

        或者如何至少增加 可用的时间长度?

        它在 sessionState 元素内的 web.config 中

        【讨论】:

          【解决方案4】:

          我认为很多人包装他们的会话调用以提供“延迟加载”模式。像这样的:

          class SessionHelper
          {
              public static string GetUserId()
              {
                  string userId = (string)System.Web.HttpContext.Current.Session["UserId"];
          
                  if( userId == null )
                  {
                     userId = reader("UserId");
                     System.Web.HttpContext.Current.Session["UserId"] = userId;
                  }
          
                  return userId;
              }
          }
          

          【讨论】:

            猜你喜欢
            • 2011-09-29
            • 1970-01-01
            • 2011-09-23
            • 1970-01-01
            • 1970-01-01
            • 2011-04-28
            • 1970-01-01
            • 1970-01-01
            • 2023-03-08
            相关资源
            最近更新 更多