2013年11月6日 星期三

ASP.NET的sessionState的五種屬性

ASP.NET 工作階段狀態支援數種不同的工作階段資料儲存選項。每個選項是由 SessionStateMode列舉型別中的值識別。
sessionState可以設置以下的參數,開發者可以在web.config裡,依照下面的方式進行調整。

1.InProc(預設): InProc的模式是將物件直接存放在執行ASP.NET那個Process的記憶體區塊中(IIS5是aspnet_wp.exe,而IIS6是W3wp.exe),在某些事件發生時,Process會重新啟動。在web.config的設定:


<configuration> 
      <system.web> 
             <sessionState mode="InProc"  timeout="20" cookieless="UseCookies"> 
             </sessionState> 
      </system.web> 
</configuration>
2.StateServer: 本機的一個服務,在系統服務裡服務名為ASP.NET State Service。當設定mode為StateServer之後,要在服務那邊手動將該服務啟動。在web.config的設定:

<configuration>    
   <system.web> 
        <sessionState mode="StateServer" timeout="500" 
          stateConnectionString="tcpip=127.0.0.1:42424"/>    
   </system.web> 
</configuration>
3.SQLServer: 將 session 存於 SqlServer 資料庫中,必需要有ASPState資料庫,所以要使用 aspnet_regiis.exe 工具來新增,步驟如下:
  (1.)新增 ASPState 資料庫:進入命令模式視窗輸入 aspnet_regsql.exe -S ServerName -E -ssadd -sstype p
  (2.)如果要移除:進入命令模式視窗輸入aspnet_regsql.exe -S ServerName -E -ssremove
  (3.)web.config的設定:

<configuration>    
      <system.web> 
             <sessionState mode="SQLServer" 
                        sqlCommandTimeout="30" 
                        sqlConnectionString="data  source=localhost;Integrated           
                        Security=SSPI"> 
              </sessionState> 
      </system.web> 
</configuration>

4.Custom模式此模式可讓您指定自訂儲存提供者 (Provider)。

5.Off模式此模式會停用工作階段狀態。

開發者可以在應用程式的 Web.config檔中,將 SessionStateMode列舉值指派給 sessionState項目的 mode屬性(Attribute), 而 IIS會依據 mode屬性決定了 Session儲存的位置,除了 InProc和 Off 以外的模式都需有其他參數(例如連接字串值)。可以透過 System.Web.SessionState.HttpSessionState.Mode 屬性值,以檢視目前選取的工作階段狀態。

-雲遊山水為知已逍遙一生而忘齡- 電腦神手

沒有留言:

張貼留言