2011-11-06 52 views
2

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

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

+0

你的session-state-sql-database在哪里以及如何运行? – stefan

回答

2

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

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

如果您有网络园区,请尝试将最大工作进程删除回1以查看是否可以解决问题。

在检查IIS设置时,您应该也可以确保应用程序池不会定期回收。这可能是由于下列任何一种在应用程序池为:

1)专用空间限制(如有的最大内存量已经超过了应用程序池复位)

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

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

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

更新:

另外一个想法:

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

+0

对不起,我忘了提及,我们没有使用网络农场或网络花园..并且最大工作进程已经设置为1.专用内存限制为0KB(默认情况下),我也设置空闲超时为0 。 – OBA

+0

更新的答案还有一个额外的想法 –