數據庫實現多站點共享Session
多站點共享Session有很多方法,多站點共享Session常見的做法有:
- 使用.net自動的狀態服務(Asp.net State Service);
- 使用.net的Session數據庫;
- 使用Redis等緩存。
- 使用Cookie方式實現多個站點間的共享,但是這種方式只限於幾個站點都在同一域名的情況下;
這里主要介紹數據庫的形式存儲Session,來實現多站點共享Session。
1.新建web站點,添加setSession.aspx 等頁面,如下圖:
2.修改web.config 配置,增加 sessionState配置是讓 Session 保存在數據庫中
具體配置如下:
<sessionState mode="SQLServer" timeout="40" allowCustomSqlDatabase="false" sqlConnectionString="data source=XXX;uid=sa;password=sasa"/>
網站部分這樣就好了,發布成兩個不同的網站,http://localhost:8097和http://localhost:8098。
3.配置session的sqlserver 模式
網站創建好之后,下面就是要配置據庫,具體配置方法,參考前一篇博客:Session的SqlServer模式的配置
4.共享SessionID
ASPStateTempSessions 表中的SessionID ,包括兩個部分:網站生成的24位SessionID及8位AppId組成,對於不同的站點,其AppId和AppName也不同,在能夠在不同站點下Session共享,就得保證這個32位的SessionID 一致,所以可以通過修改存儲過程TempGetAppID,使其得到的SessionID與AppName無關,修改TempGetAppID如下:
修改完之后,重啟一下各站點。再在瀏覽一下網站,兩個網站能獲取到同一個session了: