一:Session簡介
Session是什么呢?簡單來說就是服務器給客戶端的一個編號。當一台web服務器運行時,可能有若干個用戶瀏覽正在運正在這台服務器上的網站。當每個用戶首次與這台web服務器建立連接時,他就與這個服務器建立了一個Session,同時服務器會自動為其分配一個SessionID,用以標識這個用戶的唯一身份。這個SessionID是由web服務器隨機產生的一個由24個字符組成的字符串,我們會在下面的實驗中見到它的實際樣子。
二:Asp.Net中Session的集中模式和配置
(1):InProc,Session存儲在進程內,這也是ASP.Net中的存儲方式,也是默認值
(2): StateServer,Session存儲在獨立的狀態服務即ASP.NET State Service中
(3):SQLServer,Session存儲在SQL Server數據庫中
(4):Custom,自定義保存方式,可以保存在Oracle、SQLServer、MongoDb、Redis中
本片文章主要講述Session在Redis中的存儲和共享
三:基於Redis的Session Provider配置
(1)分別對站點A和B的HomeController做如下更改,如下圖所示,增加了創建Session和獲取Session功能
分別對應的View視圖
(2)RedisProvider配置:Microsoft.Web.RedisSessionStateProvider
用Nuget安裝Microsoft.Web.RedisSessionStateProvider,如下圖:
修改配置文件:
Redis的安裝請參見:《Redis在Linux環境上的安裝和啟動》
四:負載均衡Session測試
(1)瀏覽器中輸入:http://192.168.152.128/ 創建Session
(2)瀏覽器中輸入:http://192.168.152.128/home/getsessionvalue, 打開兩個Tab,一定要在同一個瀏覽器窗口中打開,否則SessionID肯定是不一樣
從圖中可以看到站點A共享站點B創建的Session。
從redis中也可以看出剛剛創建的Session,如下圖