【问题标题】:ASP.NET sessions timing out using SQL Membership Provider使用 SQL Membership Provider 的 ASP.NET 会话超时
【发布时间】:2009-07-22 06:54:04
【问题描述】:

我从进程内成员资格提供程序更改为 sql 成员资格提供程序,以防止人们在网站进程回收时丢失他们的会话,但会话似乎仍然超时。

在使用 sql 成员资格提供程序时,是否有任何其他因素(除了 web.config 中设置的会话超时变量)会导致会话超时。 即使用户关闭并打开浏览器,我也希望会话持续存在。我必须做一些特别的事情来做到这一点吗?

【问题讨论】:

    标签: asp.net session asp.net-membership sqlmembershipprovider


    【解决方案1】:

    使用持久性 cookie(“记住我复选框”),用户在 3 天内登录。如果你想让这个窗口更大,你需要自己构建它。

    【讨论】:

      【解决方案2】:

      我认为关闭窗口后无法保持会话。用户帐户由会话 cookie 编制索引,并在他们关闭窗口时被删除。

      可以做的是存储用户个人资料信息,并在他们登录或以其他方式识别自己(例如普通 cookie)时恢复它。

      【讨论】:

        【解决方案3】:

        您混淆了会话(其本质上会过期,并且应该是仅适用于单个会话的临时数据)和配置文件。您可以使用 ASP.NET 的成员资格数据库功能来设置持久设置,但只有在用户保持登录状态时它们才会重新出现。

        不过……也有匿名身份。您可以在 web.config 中启用此功能

        <anonymousIdentification enabled="true"/>   
        

        然后将您的个人资料设置标记为可供匿名用户使用;

        <profile>
          <properties>
            <add name="Name" allowAnonymous="true" />
          </properties>
        </profile>
        

        匿名 cookie 的有效期约为 70 天。如果您决定支持注册和完整会员资格,则需要在用户注册时将匿名设置移至用户设置。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-08
          • 2010-12-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多