【问题标题】:Session and static variables getting reset会话和静态变量被重置
【发布时间】:2019-08-24 09:53:22
【问题描述】:

我正在使用 ASP Net MVC 系统,我从一开始就遇到的问题是我的会话变量和静态变量在大约 30-45 分钟后被重置(但我不确定它总是发生)。 我已经尝试过的选项: * 从配置文件更改会话超时 * 检查回收时间 * 使用服务器状态会话而不是进程中 * 也许还有一些我不记得的事 我不知道还能尝试什么,或者在哪里进行调查,目前我也没有确定的线索。在开发时尝试功能真的很烦人。 有什么想法吗?

配置文件

<sessionState timeout="120" />

Pool config

【问题讨论】:

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


    【解决方案1】:

    不确定这是否是您的问题,但导致我头疼的一种可能性是:您部署的 IIS 的 AppPool Maximum Worker Processes 设置为大于 1 的值(请注意上面@BrandoZhang 的屏幕截图是否设置为 1)。静态变量、类,甚至 ApplicationState 都不会跨进程共享。

    【讨论】:

      【解决方案2】:

      据我所知,在 IIS 7.0 及以上版本中,工作进程默认在一段时间不活动(20 分钟)后终止。

      因此,如果Secret Server在自己的应用池中,应用池会在一段时间无请求后停止。

      我建议您可以按照以下步骤修改应用程序池设置以保持 Web 应用程序始终运行以避免会话丢失。

      1. 打开 IIS(开始 > inetmgr)
      2. 右键单击应用程序池,然后单击高级设置。
      3. 在流​​程模型部分下,设置空闲超时(分钟) 选项 0

      【讨论】:

      • 但是 0 分钟意味着它永远不会重置会话。它不会大大降低服务器性能吗?在我的情况下,它设置为 240 分钟,但正如我之前解释的那样,会话仍然被重置
      • 通常会话不会在会话超时之前过期。我猜原因是Web应用程序重新启动。我建议你可以关注这个answer 找出重启原因。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-26
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      • 2013-02-09
      • 2013-06-23
      • 2012-02-26
      相关资源
      最近更新 更多