IIS空闲超时无效

时间:2016-12-19 07:57:21

标签: asp.net asp.net-mvc iis

我已将Idle-timeout设置为1分钟以进行测试。另外,我将SessionState超时设置为3分钟。 SessionState超时工作正常,但IIS空闲超时不起作用?

为了您的信息,我检查了文件ApplicationHost.config,设置已经存在

<system.applicationHost>
     <applicationPools>
        <add name="dev_web_core" autoStart="true" startMode="AlwaysRunning">
                <processModel idleTimeout="00:01:00" />
                <recycling>
                    <periodicRestart time="00:00:00">
                        <schedule>
                            <clear />
                            <add value="01:00:00" />
                        </schedule>
                    </periodicRestart>
                </recycling>
            </add>
     </applicationPools>
</system.applicationHost>

1 个答案:

答案 0 :(得分:0)

根据您的评论,您似乎期望应用程序池idleTimeout导致身份验证超时。这是无关的。此超时会触发应用程序池回收,这会导致应用程序进程停止(并在请求到来时续订)。

发布的身份验证票据不受此流程回收的影响(至少使用Asp.Net Identity等框架,前提是您的站点机器密钥不会更改)。

您应该寻求并设置身份验证框架的超时。以Owin为例,可以在发出票证时进行设置。

var authenticationManager = HttpContext.Current.GetOwinContext().Authentication;
// Your custom expiration, preferably taken from some settings
var expiration = rememberMe ? 144000 : 30;
var now = DateTimeOffset.UtcNow;
authenticationManager.SignIn(
    new AuthenticationProperties
    {
        AllowRefresh = true,
        IssuedUtc = now,
        ExpiresUtc = now.AddMinutes(expiration),
        IsPersistent = rememberMe
    }, claimsIdentity);