2011-02-25 82 views
1

因此,我们有三个2008 R2服务器,其中两个配置为Web服务器(IIS 7.5),第三个是会话状态服务器。我已经在应用程序web.config中设置了SessionState和MachineKey设置。重启两台Web服务器后,我可以登录到一台服务器,然后将IP地址更改为另一台服务器,并且我仍然登录。成功。IIS会话状态服务器在30-60分钟后停止工作

我通常可以用我想要的任何用户帐户登录/注销,来回更改IP地址,并且一切都很好,直到我登录到一台服务器后30-60分钟之间的某个随机时间,更改IP地址,并且新服务器要求提供凭据。

这是两个web.configs将sessionState设置:

<sessionState mode="StateServer" stateConnectionString="tcpip=xxx.xxx.xxx.xxx:42424" cookieless="false" timeout="30"/> 

应用程序驻留在默认Web站点下,并使用默认的应用程序池。我正在使用表单身份验证,超时时间为20分钟。在这种情况发生时,我没有收到任何三台服务器上的任何错误事件,并且重新启动这两台Web服务器可以解决问题一段时间。这两个Web服务器本身不是群集的,但将通过网络设备循环服务。

任何援助将不胜感激。

回答

1

检查您在authentication->forms元素中是否有slidingExpiration="true"

0

会话超时和表单验证超时不一样,也不会保持同步。 Forms Auth正在要求凭证,因为它已超时。检入SlidingExpiration。状态服务器不在意,如果你引用过期的东西,它就会炸毁。此外,请仔细阅读SlidingExpiration是如何工作的,它的棘手:如果请求 制成,

滑动到期重置 到期时间的有效 身份验证cookie 超过超时 间隔的一半已经过去了。

Handling session and authentication timeouts in ASP.Net