You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 5会话超时延长配置无效,请求协助排查

排查.NET Core 5.0会话/身份验证超时不足30分钟的问题

结合你的配置,以下几个常见问题会导致超时不符合预期:

  • 中间件顺序错误
    会话中间件的启用顺序至关重要,必须在身份验证中间件之前执行。检查你的Configure方法中是否按以下顺序调用:

    app.UseSession();
    app.UseAuthentication();
    app.UseAuthorization();
    

    如果UseSession在UseAuthentication之后,会话配置不会生效,会 fallback 到默认的超时设置(通常20-30分钟)。

  • 应用程序池闲置超时限制
    如果你部署在IIS上,默认应用程序池的闲置超时时间是20分钟。当应用池回收时,内存中的会话数据会丢失,用户会被强制重新登录。
    解决方法:

    1. 打开IIS管理器,找到对应应用程序池
    2. 右键选择“高级设置”
    3. 将“闲置超时(分钟)”调整为大于48小时的数值,或者设置为0(无限制)
      另外,若使用内存会话存储,应用重启或回收都会丢失会话,生产环境建议使用分布式缓存(如Redis、SQL Server)来持久化会话数据。
  • 配置被其他地方覆盖
    检查是否存在以下情况:

    • appsettings.json或appsettings.{Environment}.json中是否有Session或Authentication节点,覆盖了代码中的配置:
      "Session": {
        "IdleTimeout": "00:30:00"
      }
      
    • 项目中是否有其他代码(如过滤器、自定义中间件)修改了会话或Cookie的超时设置
  • 会话Cookie的额外配置缺失
    虽然你设置了IdleTimeout,但会话Cookie默认是会话级Cookie(浏览器关闭即失效),同时可以补充配置Cookie的过期时间,确保客户端Cookie有效期与服务器端超时匹配:

    services.AddSession(options =>
    {
        options.IdleTimeout = TimeSpan.FromHours(48);
        options.Cookie.IsEssential = true;
        options.Cookie.HttpOnly = true;
        options.Cookie.Expires = TimeSpan.FromHours(48); // 新增客户端Cookie过期时间
    });
    
  • 身份验证Cookie的Cookie配置冲突
    确保应用程序Cookie和会话Cookie的名称不重复,避免相互覆盖:

    services.ConfigureApplicationCookie(options =>
    {
        options.Cookie.Name = ".YourAppName.Identity"; // 显式设置唯一名称
        options.ExpireTimeSpan = TimeSpan.FromHours(48);
        // 其他配置...
    });
    
    services.AddSession(options =>
    {
        options.Cookie.Name = ".YourAppName.Session"; // 显式设置唯一名称
        options.IdleTimeout = TimeSpan.FromHours(48);
        // 其他配置...
    });
    

内容的提问来源于stack exchange,提问作者Brainiac005

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 01:15:31