程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 用SQL Server保持會話狀態

用SQL Server保持會話狀態

編輯:關於SqlServer

在調用服務器後要繼續在服務器中保留數據通常很難,你可以用SQL Server來進行會話狀態管理(用戶會話數據)。以下教你怎樣用它來進行管理。

  在頁面開發中,在服務器調用裡保留數據是一個常見的不好解決的難題。你也許需要為你的應用程序或特殊用戶的會話保存信息。存儲這樣的數據被稱為狀態管理,ASP.Net為你提供了一些方法,這些方法能讓你通過各種途徑完成這一任務。這包括將數據存儲在一個狀態服務器的內存中,或者通過Microsoft SQL服務器。本文主要討論了用SQL服務器來進行會話狀態管理(用戶會話數據)。

  為什麼需要進行狀態管理?

  在設置和使用SQL Server之前,你也許會想有必要這樣做嗎?頁面開發還有更讓人煩惱的一面,那就是HTTP是一項無狀態協議。它的運行是斷斷續續的,每個頁面都會按接受到的命令運行。命令執行完以後,所有用過的數據都會丟失。服務器不會存儲關於那些調用的任何記憶。也就是說,它不會存儲相關記憶,除非有特殊的指令讓它存儲。

  會話變量

  以下是使用會話變量的格式:


  C#: Session["variable_name"] = value;
  VB.Net: Session("variable_name") = value

  當這個值被存儲了,用戶就可以在整個會話中使用它了。會話結束後,變量也就丟失了。你也可以使用回歸狀態管理(這是我們下一次要討論的話題)來處理這些丟失的值。

  ASP.Net狀態管理

  ASP.Net允許你通過一個狀態服務器或SQL服務器將會話數據存儲在內存中。存儲的位置由應用程序的頁面配置文件來決定。狀態管理選項是在系統中的sessionState元素中,頁面元素是在狀態管理中進行設置的。以下的示例顯示了怎樣使用SQL Server:
    mode="SQLServer"
  stateConnectionString="tcpip=127.0.0.1:42424"
  sqlConnectionString="data source=127.0.0.1;user id=username;password=passWord"
  cookIEless="false"
  timeout="20" />
 注意,這些元素的名稱和屬性都要區分大小寫。以下是該模式屬性的各種可能值:
  ? InProc-存儲在內存中。它的運行速度最快,但是當ASP.Net程序重復運行的時候所有的數據都會丟失。
  ? SQL Server-將數據存儲在SQL Server中。由於它與頁面服務器是分離的,因此它是最可信的。連接字符串會按照正常的順序排列,以連接到SQL Server數據庫中。
  ? StateServer-將數據存儲在一個獨立的頁面服務器上(IIS)。這一選項利用了stateConnectionString這一屬性。

  所有的選項都使用保留。 cookieless屬性會告知用戶那些cookIEs是被存儲在內存(虛擬的)中還是保留在Querystring/URL(真實的)中。timeout屬性則會告知用戶會話變量被存儲的時間(沒有接受任何命令)的長短。

  設置 SQL Server

  SQL Server需要一個特殊的數據庫來進行狀態管理。幸好.Net Framework安裝包括了必備的文件,這些文件可以讓它啟動並立即運行。以下的腳本都安裝了:
  ? InstallPersistSqlState.sql-包括建立數據庫的腳本,這個數據庫是持久狀態管理中要用到的。
  ? UninstallPersistSqlState.sql-包括卸載持久狀態管理的腳本。
  ? UninstallSqlState.sql-包括卸載狀態管理的腳本。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved