1. 程式人生 > >ASP.NET 的session物件

ASP.NET 的session物件

  ASP.NET一共內建了7個物件,有session 、Application、response 、request 、server 等。

  這裡就介紹其中的session物件。Session即會話,他是指一個使用者在一段時間內對某一個站點的一次訪問。它表示一個客戶端使用者與伺服器進行通訊的時間間隔。通常是指從登入進入系統一直到退出系統所經歷的時間。每一個使用者訪問web時訪問的Application物件的內容是完全相同的,session物件就提供了一個sessionID屬性來來對使用者進行唯一的區別。即每一個網頁瀏覽者都會有一個自己的sessionID,標識唯一。

  Session屬性

  Count   獲取會話狀態集合中Session物件的個數

  Contents  獲取對當前會話狀態物件的引用

  Keys    獲取儲存在會話中的所有值的集合

  SessionID   獲取用於標識會話的唯一會話ID

  TimeOut    獲取並設定在會話狀態提供程式終止會話之前各請求之間所允許的超時期限(使用者超時)

  Mode    獲取當前會話狀態模式

  Session方法

  Add    新增一個Session物件 (session物件是不可用例項,可以通過Add方法設定session物件的值: session.add(變數名, 變數值 )或者 session[變數名]=變數值;

  Clear  清楚會話狀態中的所有值

  CopyTo 將會話狀態值的集合複製到一維陣列中

  Remove  刪除會話狀態集合中的項

  RemoveAll  清楚所有會話狀態值

  Session事件

  Session_start 會話啟動時激發

  Session_end 會話結束時激發

  Session物件優點:

  當很多web網頁傳遞一個變數的時候,session變數的傳遞比QueryString傳遞變數簡化問題。

可以在任何時候使用session變數,而且不需要事先宣告它,這種方式接近在VB變數的使用。使用完畢後,也不用考慮將其釋放,因為它將自動釋放。

  缺點:

  Session變數和cookies是同一型別的。如果某使用者將瀏覽器設定為不相容任何cookie,那麼該使用者就無法使用這個session變數。

  當一個使用者訪問某頁面時,每個Session變數的執行環境便自動生成,這些Session變數可在使用者離開該頁面後仍保留20分鐘!如果在Session中置入了較大的物件(如ADO connections),那就有麻煩了!隨著站點訪問量的增大,伺服器將會因此而無法正常執行!

  因為建立Session變數有很大的隨意性,可隨時呼叫,不需要開發者做精確地處理,所以,過度使用session變數將會導致程式碼不可讀而且不好維護。