如何在1小时内增加会话超时

时间:2018-03-28 13:51:41

标签: asp.net authentication iis

我希望允许用户使用超过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分钟,然后再做一些事情,而到期时间仍然超过一小时,我将获得登录页面。

有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

要配置会话不活动超时,有四个设置。在我的问题中,我提到了三个设置,timeout and auto logout in asp.net 2.0 with IIS 7 even after doing all the possible settings提到了第四个设置:Web.config中的SessionState参数。