【发布时间】:2018-09-07 06:00:38
【问题描述】:
我想允许用户超过 1 小时的更长时间的不活动超时设置。我在 web.config 中配置:
<authentication mode="Forms">
<forms name="MYWEBAPP.ASPXAUTH" loginUrl="~/Welkom.aspx" protection="All"
timeout="181" slidingExpiration="true" path="/"/>
</authentication>
应用程序池有高级设置:
Idle Time-out (minutes): 181
在登录代码中我配置了票证和 cookie:
FormsAuthenticationTicket ticket = new ...
ticket.expiration = DateTime.Now.AddMinutes(180);
...
cookie.Expires = ticket.Expiration.AddMinutes(5);
Response.Cookies.Add(cookie);
MasterPage 在每个网页的页脚打印ticket.expiration,这样我就可以看到内部发生了什么。
众所周知,sliding expiration 表示超时值只有在超时时间过半后才通过 GET 请求增加。我测试如下:
登录时,我在页脚中看到提前 3 小时的过期时间。
每隔一段时间我都会在网站上做一些事情,但是过期时间没有改变。
如果我在到期时间提前不到 90 分钟时执行某项操作,则到期时间会从那一刻起更新为 3 小时。
但是,如果我等待超过 60 分钟,然后做某事,而到期时间仍然提前一个多小时,我会得到登录页面。
有人知道如何解决这个问题吗?
【问题讨论】:
-
你读过这篇 S/O 文章吗? stackoverflow.com/questions/3984424/…
-
@tgolisch 很棒的链接!现在我在 Web.config 中找到了这个 SessionState 参数。测试需要很多时间,期待明天的结果。
-
@tgolisch 90 分钟的第一次测试成功了!为什么不将缺少 SessionState 参数的链接放在我很乐意接受的答案中?
标签: asp.net authentication iis