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

.NET MVC 4.8部署IIS后Session 5分钟超时问题求助

解决.NET MVC 4.8部署到IIS后Session提前超时的问题

针对你遇到的「本地运行Session超时正常,但部署到IIS后5分钟就超时」的问题,可按以下步骤排查和解决:

1. 检查IIS应用池的回收与闲置超时设置

由于你使用的是InProc模式(Session存储在应用池进程中),应用池回收或闲置超时会直接导致Session丢失:

  • 打开IIS管理器,找到目标应用对应的应用池
  • 右键选择「高级设置」:
    • 查看「回收」板块的「固定时间间隔(分钟)」,若设置为5分钟会触发频繁回收,建议设为0禁用固定时间回收
    • 查看「进程模型」板块的「闲置超时(分钟)」,若值为5则会在应用闲置时终止进程,按需调整为目标时长或设为0禁用闲置超时

2. 验证IIS站点的会话状态配置是否覆盖Web.config

IIS可视化配置可能优先级高于Web.config:

  • 进入目标站点的「ASP.NET」板块,打开「会话状态」
  • 确认「超时(分钟)」为525600、「模式」为「InProc」,若不一致则修改并点击「应用」保存

3. 修正Web.config框架版本不一致问题

你的Web.config中compilation目标框架为4.8,但httpRuntime目标框架为4.5,版本不匹配可能引发配置异常:
修改Web.config的httpRuntime节点:

<httpRuntime targetFramework="4.8" />

4. 确认Session配置在IIS中生效

在任意控制器Action中添加调试代码,验证当前Session超时时间是否正确:

public ActionResult CheckSessionTimeout()
{
    return Content($"当前Session超时时间:{Session.Timeout} 分钟");
}

访问该Action,若输出不是525600,则需重新检查Web.config和IIS配置的一致性。

5. 排查是否有代码覆盖Session.Timeout

检查项目中其他代码(如登录逻辑、全局过滤器等)是否存在修改Session.Timeout的逻辑,确保没有覆盖你设置的超时值。

注意:你登录时使用的SignInManager.PasswordSignInAsync的isPersistent: true控制的是认证Cookie持久化,和Session超时是独立机制,不要混淆两者的配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 23:05:09