Session同步

在開發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,成功同步

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章