我希望允许用户使用超过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分钟,然后再做一些事情,而到期时间仍然超过一小时,我将获得登录页面。
有人知道如何解决这个问题吗?
答案 0 :(得分:0)
要配置会话不活动超时,有四个设置。在我的问题中,我提到了三个设置,timeout and auto logout in asp.net 2.0 with IIS 7 even after doing all the possible settings提到了第四个设置:Web.config中的SessionState参数。