因此,我们有三台2008 R2服务器,其中两台配置为Web服务器(IIS 7.5),第三台配置为会话状态服务器。我在应用程序web.config中设置了SessionState和MachineKey设置。重新启动两个Web服务器后,我可以登录到一个服务器,然后将IP地址更改为另一个服务器,我仍然登录。成功。
我通常可以使用我想要的任何用户帐户登录/注销,来回更改IP地址,直到30-60分钟之间的一些随机时间我登录到一台服务器,更改IP地址,新服务器要求提供凭据。
这是web.configs中的sessionState设置:
<sessionState mode="StateServer" stateConnectionString="tcpip=xxx.xxx.xxx.xxx:42424" cookieless="false" timeout="30"/>
应用程序位于默认网站下,并使用默认应用程序池。我正在使用表单身份验证,超时为20分钟。当发生这种情况时,我没有在三台服务器中的任何一台上收到任何错误事件,并且重新启动两台Web服务器会将问题解决一段时间。这两个Web服务器本身不是群集服务器,而是通过网络设备循环服务。
任何帮助都将不胜感激。
答案 0 :(得分:1)
检查slidingExpiration="true"
元素中是否有authentication->forms
。
答案 1 :(得分:0)
会话超时和表单身份验证超时不同,也不保持同步。 Forms Auth要求提供凭据,因为它已经超时。检查SlidingExpiration。状态服务器并不关心,如果您引用已过期的内容,它将会爆炸。另外,请仔细阅读SlidingExpiration的工作原理,这很棘手:
滑动过期会重置 有效期限到期时间 如果请求是身份验证cookie 制作和 超过一半的超时 间隔已经过去了。