Session同步

来源:互联网 发布:java服务器端部署 编辑:程序博客网 时间:2024/05/21 11:18

在开发asp项目过程中,由于考虑到负载问题,开始时,将asp网站分别部署到了三台机器上,使用dns轮转的方式来进行负载均衡,未发现什么大的问题

后来,切换为使用nginx跳转到三台机器来实现负载均衡时,以为应该也不会有什么大的问题,谁知遇到了很奇怪的现象,当访问首页时,会出现不停在首页进行302跳转的情况。想了下nginx与dns轮转的区别,想到可能跟session有关系,看了下代码,发现有两个地方跳转,第一个首页登录后跳转到需求页面,需求页面再判断session为空时,会跳回首页。而当从需求页面跳回首页时,首页会判断refer,跳到refer页面。302跳转不会改变refer,也就是refer是登录页面,于是形成了在登录页面不停跳转的情况。

     把refer部分去掉后,登录后会再登录页面和需求页面之间来回跳转,先把这部分修改为了cookie验证,发现通过,可以登录进入到需求页面。

    后在web.config中添加了:

<sessionState cookieless="UseCookies" mode="StateServer" stateConnectionString="tcpip=192.168.5.2:42424" timeout="20"/>

<machineKey validationKey="78AE3850338BFADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4" decryptionKey="5FC88DFC24EA123C" validation="SHA1"/>

两个配置项后,session使用了一个服务端的Session,但是发现还是会出现session不同步的问题

 

继续google后,发现session同步还跟iis网站的id有关系,于是将三台机器的id全部修改为相同的id,

iis7中只需修改网站属性即可
iis6需要使用命令 cscript adsutil.vbs move w3svc/999 w3svc/2

按查询到得资料来看,只要id相同,与iis的版本没什么关系,但是我仍遗留了一个问题,就是iis6与iis7之间的session一直没有同步成功~~~幸好iis6只有一台机器,更换了一台机器后,全部使用iis7,成功同步

原创粉丝点击