通過ASP.NET StateServer實現進程外Session存儲
我們平常啓動瀏覽器去訪問網站經常會涉及到Session的讀和寫,但是通常的Session是保存在當前的進程中,即訪問網站的瀏覽器進程,如關閉此瀏覽器,再打開訪問,Session就會丟失...
一般長時間保持Session會用到SqlServer數據庫的方式存儲Session;
但是如何進程間共享Session呢,一般安裝了.NET Framework的電腦,在控制面板"程序"中啓動IIS的相關.NET Framework框架功能
然後
1.打開註冊表,regedit,找到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\aspnet_state\Parameters
a.將AllowRemoteConnection值設置爲1 //是否啓用遠程服務,0爲僅Localhost
[b.將Port值設置爲a5b8(十六進制),即十進制42424(默認值)]
2.打開"服務",找到"ASP.NET State Service"服務,啓動該服務。(相關exe位置C:\Windows\Microsoft.NET\Framework64\v4.0.30319)
3.在當前web項目的配置文件web.config文件system.web節點下添加
<sessionState mode="StateServer" stateConnectionString="tcpip=localhost(或遠程地址):42424"></sessionState>
- <span style="white-space:pre"> </span>if (Session["Test"] == null)
- {
- Response.Write("Session星球上暫時還沒有人,正在造人~");
- Session["Test"] = new Person("小航哥", "男", 18);
- }
- else
- {
- Person p = Session["Test"] as Person; <strong><span style="color:#33ff33;"> </span><span style="background-color: rgb(102, 255, 153);">//注意,要使用StateServer保存對象,除了基本類型的數據,其他類對象必須可以序列化[Serializable]</span></strong>
- Response.Write(String.Format("Session星球有一個人,他叫{0},{1},{2}歲",p.Name,p.Sex,p.Age));
- }