【问题标题】: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 天。如果您决定支持注册和完整会员资格,则需要在用户注册时将匿名设置移至用户设置。