【问题标题】:ASP.NET Session RecyclesASP.NET 会话回收
【发布时间】:2011-12-23 04:53:36
【问题描述】:

在 ASP.NET 网站中,我们将会话存储在 SQL Server 中。一切正常,除了会话经常回收。我将超时时间设置为 30 分钟,但有时它会在几分钟内回收。我们有一个专用服务器,以及在“经典”应用程序池下运行的网站。我在这个问题上搜索了很多,但没有找到满意的答案。任何帮助将不胜感激。

注意:大多数情况下它发生在一个有很多使用视图状态的页面上,我很好奇是否有视图状态与会话回收的链接?

【问题讨论】:

  • 您的 session-state-sql-database 在哪里以及如何运行?

标签: asp.net sql-server session recycle


【解决方案1】:

当我们有一个网络农场(多个 Web 服务器为客户端提供服务)或一个网络花园(应用程序池中有多个工作进程)时,我们就遇到过这个问题。

如果您有一个网络场,那么您需要确保所有网络服务器都有the same machine key,并且所有实例都有exact same application path

如果您有一个网络花园,请尝试将最大工作进程数降回 1,看看是否能解决问题。

在检查 IIS 设置时,您可能还应该确保应用程序池没有定期回收。这可能是由于应用程序池中指定的以下任何原因造成的:

1) 私有内存限制(如果超过最大内存量,应用程序池将被重置)

2) 定期时间间隔回收(应用程序池在指定分钟数后自动回收,默认为 1740 和/或在特定时间)。

3) 空闲超时(在应用程序池自动关闭之前可以经过的非活动分钟数)。

您还应该检查事件日志以获取有关应用程序池崩溃或以其他方式被回收的报告。

更新:

另一个想法:

如果您的应用程序(例如防病毒软件或备份软件)会监控您应用程序的 bin 目录并修改或更改该目录或 web.config 文件中的文件的属性(例如备份标志或时间戳),这也会导致应用程序回收。

【讨论】:

  • 抱歉,我忘了说,我们没有使用网络农场或网络花园。最大工作进程已设置为 1。私有内存限制为 0KB(默认情况下),我我们还将空闲超时设置为 0。
  • 更新了答案并补充了一些想法
猜你喜欢
  • 1970-01-01
  • 2011-04-02
  • 1970-01-01
  • 2011-10-29
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
相关资源
最近更新 更多