進程外Session

一、Session保存在SQLServer中配置方法:html

1)運行.NetFramework安裝目錄下對應版本的aspnet_regsql.exe 來建立相關的數據庫、表和存儲過程等,好比:web

C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regsql.exe -ssadd -sstype p -S 127.0.0.1 -U sa -P 123456sql

 

其中-sstype p表示數據庫名固定爲ASPState,-S(大寫)爲數據庫服務器地址,-U和-P分別爲數據庫的用戶名和密碼,參數詳細解釋見 http://blog.csdn.net/yuanzhuohang/article/details/6758304數據庫

2)修改web.config中sessionState節點的配置:<sessionState mode="SQLServer" timeout="20" sqlConnectionString="server=.;uid=sa;password=123456;" ></sessionState>服務器

************************************************cookie

2.(*)Session還能夠保存在StateServer中, StateServer是Windows的一個服務。session

 

     session保存在專門的StateServer中,該種方式,性能損失比sql略好。比inproc聽說有10%-15%的性能損失。怎麼使用StateServer 服務器呢?併發

     一、初始化StateServer服務器負載均衡

          啓動ASP.NET 狀態服務【aspnet_state】,該服務默認是手動啓動的,能夠經過修改註冊表,設置爲自動啓動並容許遠程鏈接。修改方法以下:less

          修改註冊表: [HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/aspnet_state/Parameters]
          設置 AllowRemoteConnection = 1 , 設置 Port = 42424 (十進制,默認即爲42424)
          AllowRemoteConnection ,0僅能本機使用,1能夠供其餘機器使用.
          Port是服務的端口號

    二、修改webconfig配置文件

<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false" timeout="60"/>

     其中stateConnectionString中的tcpip表示StateServer服務器的ip和端口。

    注意StateServer不支持負載均衡,若是是大併發請保存在sql中。

 

參考文章:http://www.cnblogs.com/skykang/archive/2011/07/05/2098565.html

***********************************************

3.進程外Session的對象須要「可序列化」,int、string等這些均可以,除非加標註,不然自定義類不行。之後詳細講「類的序列化」 。

4.(*)還容許自定義SessionStateProvider。進程外Session也有利於集羣。

相關文章
相關標籤/搜索