在ASP.NET网站中,我们在SQL Server中存储会话。一切正常,但会议经常回收。我将超时时间设置为30分钟,但有时会在几分钟内回收。我们有一个专用的服务器,以及在“经典”应用程序池下运行的网站。我在这个问题上搜索了很多,但没有找到满意的答案。任何帮助将不胜感激。
注意:大多数情况发生在有很多viewstate使用的页面上,我很好奇是有一个viewstate与会话回收的链接吗?
答案 0 :(得分:2)
当我们拥有一个Web服务器场(多个服务于客户端的Web服务器)或一个Web园(应用程序池中有多个工作进程)时,我们遇到了这个问题。
如果您有一个Web场,则需要确保所有Web服务器都具有the same machine key并且所有实例都具有exact same application path。
如果您有网络花园,请尝试将最大工作进程放回1以查看是否能解决问题。
在检查IIS设置时,您可能还应确保应用程序池不会定期回收。这可以归因于应用程序池中指定的以下任何内容:
1)私有内存限制(如果已超出最大内存量,则重置应用程序池)
2)定期时间间隔回收(应用程序池在指定的分钟数后自动回收,默认为1740,和/或在特定时间)。
3)空闲超时(应用程序池自动关闭之前可以经过的不活动分钟数)。
您还应该检查事件日志,查看应用程序池崩溃或以其他方式回收的报告。
<强>更新强>
另外一个想法:
如果您有一个应用程序,例如防病毒或备份软件,它会监视您的应用程序的bin目录,并修改或更改该目录中的文件或您的web.config文件的属性(例如备份标记或时间戳),这也将导致应用程序回收。