我在Session中存储了一些信息,但Session每次都被销毁。我不知道为什么会这样。我正在使用IIS7。
这是我所做的设置:
<sessionState cookieless="AutoDetect" mode="InProc" timeout="120" />
我在用户注册时存储了一些信息,但我的客户抱怨说,当他闲置20-30分钟时,信息就会丢失。我在一个自定义应用程序池中运行应用程序,其空闲超时为20分钟(在应用程序池的属性中)。这可能是问题吗?
其次即使我指定超时为120分钟,但是当我点击IIS7中的“会话状态”图标时,它在任何地方都不显示120分钟。可能是什么问题?
更新:在IIS7中“会话状态”的Cookie设置中,我看到Asp_NetSessionId的超时为5分钟。这可能是罪魁祸首吗?
答案 0 :(得分:2)
如果您的应用程序池在20分钟后被销毁,那么考虑到您的会话是inproc,这将是一个问题。将应用程序池的超时时间增加为120分钟
答案 1 :(得分:1)
如果您将会话存储在InProc中,那么应用程序将每20分钟重新启动一次,并且所有会话都将丢失。 运行StateServer服务并使用
<sessionState mode="StateServer" timeout="120" />
web.config中的。然后你不关心应用程序重启的频率,你甚至可以上传新版本,并保留会话。
答案 2 :(得分:1)
是的,当您在AppPool设置中指定空闲超时时,它基本上会终止您的工作进程,进而会破坏您的会话。
您将在Cookie设置标签下看到该值,因为处理InProc会话的方法之一是通过Cookie。