公司計劃升級所有電腦的作業系統,在導入的前置準備階段,進行系統測試時,居然發現~~
公司計劃升級所有電腦的作業系統,
在導入的前置準備階段,進行系統測試時,
居然發現~~
負責的線上系統,如果由IE6 升級 IE8 之後的版本,
會發現使用者打完帳號與密碼登入後,開始鬼打牆的情況,
一直出現登入首頁的情況。
寫了一些測試程式,發現,原來是Session的問題,
由於系統有採用Hardware NLB的設定,
而且登入後的網頁,有再觸發另開新一個視窗,
發現兩個視窗的Physical Host IP是不一樣的,
Session無法在兩台不同的Server間共用。
於是乎,很用力的來去Google看有沒有什麼前車之鑑可以參考,
發現,其實蠻多人遇到這個問題。
解決方法就是要採用Session Management,
主要分為兩種方法(1) Inproc (2) Outproc
其中Outproc又分兩種方法(a)State Server (b) SQL Server
每個方法各有其不同的優缺點。
目前我是選擇State Server的作法,
很多文章都說,以效能來說存取速度比SQL Sever來的好,
但是,可能會對State Server的記憶體需求較大,
所以,上線後有三不五時去觀察一下State Server上的記憶體,
本人還是怕會弄掛一堆其它同事負責的系統。
Satae Server設定的步驟大致如下:
(1)使用regedit修改系統機碼
(2)找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\Port 將 AllowRemoteConnection 改成 1
PS1.視需要修改Port Number(預設為42424)
PS2.注意防火牆的Port也要設定,像我是Internet --> Intranet ,就需要變更相關設定
(3)到[服務],將[ASP 狀態服務]設定啟動
-
二台AP WebConfig設定
<sessionState
mode="StateServer"
stateConnectionString="tcpip=Server ip:42424"
stateNetworkTimeout="10"
cookieless="false"
timeout="20"
/>
PS1.cookieless也是要依本身條件選擇
PS2.也要記得將兩台的Machine Key設定相同,才會用統一的規則去存取State Server的資料
-
參考網址:
Config參數設定說明
http://msdn.microsoft.com/zh-tw/library/h6bb9cz9(VS.80).aspx
不知道未來,還會不會遇到這種類似情況,還是記錄下來~~
之後,總是有個地方可以再查閱。