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

ASP.NET MVC中Session.Timeout设置被忽略的问题排查求助

需检查的配置项
  • Azure AD 令牌生命周期配置
    对接Azure AD时,默认access token有效期通常为1小时左右,即使Session未超时,令牌过期后可能触发重新认证,导致Session被重置或清除。需在Azure AD应用注册中检查:

    • 访问令牌的过期时间,可调整为更长时长(最长1天)
    • 刷新令牌的配置,确保能自动刷新访问令牌以维持会话
  • IIS 应用池回收规则
    若Session使用默认的InProc模式,应用池回收会直接导致Session丢失,需检查:

    • 闲置超时:默认20分钟,若应用超过该时长无请求,应用池会回收。需将此值设为远大于9999小时,或直接禁用闲置超时
    • 固定时间间隔回收:默认1740分钟(29小时),若业务允许可延长或禁用该规则
    • 内存回收阈值:若服务器内存不足触发应用池回收,需调整阈值或增加服务器内存
  • SessionState 模式与配套配置
    确认web.config中sessionState的mode属性:

    • 若为StateServer或SQLServer,需确保对应的服务(ASP.NET State Service或SQL Server)正常运行,且连接配置正确,避免因服务异常导致Session丢失
    • 若为InProc,需结合上述应用池配置一起调整
  • OIDC 认证票据超时设置
    在ASP.NET MVC的Startup配置中,检查OIDC认证的Cookie过期策略:

    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        ExpireTimeSpan = TimeSpan.FromHours(9999), // 需与Session超时匹配
        SlidingExpiration = true // 启用滑动过期,活动时自动延长有效期
    });
    

    同时确保Azure AD返回的id token过期时间与Session超时协调,避免认证票据提前失效

  • 浏览器 Cookie 策略
    Session依赖浏览器存储的Session Cookie,需检查:

    • 浏览器是否设置了自动清理闲置Cookie的规则,可测试在不同浏览器中是否存在相同问题
    • 应用是否正确配置了Cookie的持久化或过期时间,避免浏览器提前清除Cookie
  • 服务器系统级限制
    检查服务器的电源管理设置,确保服务器不会因休眠、睡眠或节能模式暂停运行,导致Session数据丢失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:50:20