【问题标题】:IIS idle-timeout is not workingIIS 空闲超时不起作用
【发布时间】:2016-12-19 07:57:21
【问题描述】:

出于测试目的,我已将 Idle-timeout 设置为 1 分钟。另外,我有一个 SessionState 超时设置为 3 分钟。 SessionState timeout 工作正常,但 IIS Idle-timeout 不工作?

为了您的信息,我检查了 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>

【问题讨论】:

  • 不工作是什么意思?根本没有超时或不是所需的超时?您是否正在使用 IIS、IIS-Express 或 Cassini 以及哪个版本来测试您的 Web 应用程序?你在调试模式下测试吗? (&lt;compilation debug="true" ... 在 web.config 中。)
  • @Frédéric,我的意思是根本没有超时。换句话说,超时后,用户不会被重定向到登录页面。我正在 Microsoft Windows Server 2012 R2 上使用 IIS 版本 8.5.9600.16384 测试 Web 应用程序。谢谢

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


【解决方案1】:

根据您的评论,您似乎预计应用程序池 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);

【讨论】:

    猜你喜欢
    • 2013-06-25
    • 2013-11-27
    • 2017-08-27
    • 2013-07-06
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多