2016-12-19 56 views
0

为了测试目的,我已将空闲超时设置为1分钟。另外,我有一个SessionState超时设置为3分钟。 SessionState超时正常工作,但IIS空闲超时不起作用?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> 
+0

你是什么意思不工作?根本没有超时或没有期望的超时?您是否正在使用IIS,IIS-Express或Cassini测试您的Web应用程序,以及哪个版本?你在调试模式下测试吗? ('web.config中的'

+0

@Frédéric,我的意思是根本没有超时。换句话说,超时后,用户不会重定向到登录页面。我正在使用Microsoft Windows Server 2012 R2上的IIS V8.5.9600.16384测试Web应用程序。谢谢 –

回答

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);