如何將狀態儲存在作用中伺服器的網頁應用程式

文章翻譯 文章翻譯
文章編號: 175167 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

當您開發動態伺服器網頁 (ASP) Web 應用程式,常用的方法來自訂內容是儲存在使用者的相關資訊。有幾種方式將資訊儲存在 ASP 環境。這個範例程式碼和專業人員和每個選項的缺點包括最常用的方式儲存狀態的發行項清單。

其他相關資訊

工作階段和應用程式變數

它們有什麼運作?

工作階段應用程式 變數儲存在伺服器上。在 ASP 工作階段開始產生的一個 SessionID 是儲存在用戶端來識別 工作階段 變數的記憶體中 Cookie。如此一來用戶端必須啟用瀏覽器的工作的 工作階段應用程式 變數中的 Cookie。

專業人員

  • 這個方法很容易實作。
  • 您可以儲存簡單的變數型別和物件 (雖然建議您不要儲存物件)。
  • 在工作階段和應用程式變數中儲存的值會從使用者隱藏。

缺點

  • 這個方法需要有 Cookie 在他們的 Web 瀏覽器中啟用的用戶端。
  • 這個方法不可靠地共用框架框架組中或跨多個瀏覽器執行個體之間。
  • 這個方法會在 Web 伺服器上儲存資訊。這會減少延展性兩種方式: 在伺服器 工作階段應用程式 變數使用資源,而且它們不能用上完全負載平衡 Web 農場。

範例

設定工作階段變數的值:
<%
   'Store information in a session variable.
   Session("myInformation") = "somevalue"
%>
				
擷取來自工作階段變數的值:
<%
    'Retrieve the information stored in the session variable.
    myValue = Session("myInformation")
%>
				

Cookie

它們有什麼運作?

Cookie 的兩種類型: 在記憶體中 Cookie 和 Cookie 會儲存到用戶端的磁碟。在記憶體中 Cookie 是瀏覽器關閉之前儲存在瀏覽器的記憶體中的一或多個名稱值配對。若要儲存的 Cookie 磁碟是一個包含名稱值組的用戶端的電腦上的檔案。

Cookie 可以設定,並從用戶端和伺服器端程式碼擷取。

專業人員

  • 這個方法很容易實作。
  • 這個方法可以儲存到磁碟,供日後使用 (以磁碟為基礎的 Cookie),藉由只在 Cookie 上設定到期日。這可讓瀏覽器工作階段之間的儲存體。

缺點

  • 用戶端可以手動修改 Cookie 會儲存到磁碟。
  • 這個方法需要有 Cookie 在他們的 Web 瀏覽器中啟用的用戶端。
  • Cookie 不能儲存物件。

範例

在 Cookie 中儲存的資訊:
<%
   'Set a cookie value.
   Response.Cookies("myInformation") = "somevalue"
   'Expire the cookie to save it to disk. If this is omitted, the cookie
   'will be an in-memory cookie. In this case, the cookie is set to expire
   'in twenty days.
   Response.Cookies("myInformation").Expires = now() + 20
%>
				
從 Cookie 擷取值:
<%
    'Retrieve the information that is stored.
    myValue = Request.Cookies("myInformation")
%>
				

隱藏的表單欄位

它們有什麼運作?

每個網頁必須具有包含狀態資訊的隱藏的表單欄位的表單。而非連結和重新導向至的網頁,送出表單是當使用者瀏覽至不同的頁面。

專業人員

  • 這個方法並不需要的 Cookie。

缺點

  • 它可以是很麻煩,重新導向並連結至網頁。
  • 這個方法不能儲存物件。

範例

將資訊儲存在隱藏欄位:
<HTML>
<HEAD>
<SCRIPT LANGUAGE=javascript>
  //Function that is used to submit the links:
  function browseToUrl(url){
    form1.action=url;
    form1.submit();
  }
</SCRIPT>
</HEAD>
<BODY>

<%
  dim myInformation
  myInformation = "somevalue"  
%>

<!-- This stores the value that is set above in the hidden form field. -->
<FORM id="form1" name="form1" action="" method="post">
<INPUT type="hidden" id="myInformation" name="myInformation" value="<%= myInformation%>">  

<!-- Navigation sample that uses this technique. -->
<INPUT type="button" value="p3.asp" id=button1 name=button1 onclick='goToUrl("p3.asp");'>
</FORM>
</BODY>
</HTML>
				
擷取隱藏的表單欄位的值:
<%
    'Retrieving the information that is stored.
    myValue = Request.Form("myInformation")
%>
				

QueryString

它如何運作?

當您使用 [QueryString 集合之變數儲存在 URL 中當做名稱 / 值組。例如:
http://servername/page.asp?var1=value1&var2=value2&var3=value3
				
注意: 名稱-值配對以連字號 (&) 分隔。

專業人員

  • 如果用戶端加入書籤的網頁,將保存狀態。

缺點

  • 完整的 URL 僅能 2083 個位元組。
  • 這個方法不能儲存物件。
  • URL 是非常長且難以閱讀。

範例

將資訊儲存在 [QueryString:
<HTML>
<HEAD></HEAD>
<BODY>
<%
   'Function that assembles the QueryString:
   function AddToQueryString(qs, name, value)
     
     if qs="" then
       qs = name & "=" & value
     else
       qs = qs & "&" & name & "=" & value
     end if
     
     addToQueryString = qs
   end function

   dim querystring

   'Store the first value.
   querystring = AddToQueryString(querystring, "firstvar", "firstvalue")
   'Store the second value.
   querystring = AddToQueryString(querystring, "secondvar", "secondvalue")
%>

<a href="urlreceive.asp?<%=querystring%>">urlreceive.asp</a>
</BODY>
</HTML>
				
擷取值從 [QueryString:
<%
    'Retrieve the information stored.
    myFirstValue = Request.QueryString("firstvar")
    mySecondValue = Request.QueryString("secondvar")
%>
				

檔案和資料庫

它們有什麼運作?

您可以在許多不同的方式中實作這項技術。下列步驟說明實作檔案和資料庫儲存的狀態的一種方法:
  1. 產生的 ID,當使用者第一次登入時或瀏覽您的應用程式內的頁面。
  2. 使用任何技術本文中,儲存 「 識別碼 」。
  3. 將值儲存在檔案,使用 [做為檔案名稱的 [ID]。 若要將值儲存在資料庫中,使用識別碼和名稱-值組的組合,識別記錄。
  4. 選擇性地儲存時間戳記與資料庫中的名稱 / 值組。對於檔案,您可以使用從最後一次修訂的時間戳記。
  5. 撰寫服務來在特定時間間隔 (,例如每隔 20 分鐘或每晚都會根據多少使用者存取網站) 執行清理 (刪除資料錄和檔案)。服務可以使用時間戳記來決定記錄是否已經過期。

專業人員

  • 從使用者完全隱藏值。
  • 如果使用檔案共用或資料庫這可用來模擬 Web 伺服器陣列上的工作階段變數。
  • 它不需要的 Cookie。

缺點

  • 它會將資料儲存在伺服器端。
  • 它可以實作很麻煩。
  • 這個方法可能很緩慢,因為資料庫及檔案存取權,才能儲存和擷取值。

?考

如需詳細資訊請參閱下列文件 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網路 (MSDN):
工作階段物件
http://msdn2.microsoft.com/en-us/library/aa371675.aspx

應用程式物件
http://msdn2.microsoft.com/en-us/library/aa210897(office.11).aspx

Cookie
Response.Cookies Collection
Request.Cookies Collection

QueryString
http://msdn2.microsoft.com/en-us/library/aa196462(office.11).aspx
如需詳細資訊按一下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件:
244465如何停用動態伺服器網頁中的 ASP 工作階段狀態
178037PRB: 工作階段變數遺失當 ASP 位於框架組
最新的 「 知識庫 」 文件以及其他的支援資訊,Visual InterDev] 和 [動態伺服器網頁上,請參閱 Microsoft 技術的支援網站上的下列網頁:
http://support.microsoft.com/search/default.aspx?qu=vinterdev

屬性

文章編號: 175167 - 上次校閱: 2007年3月9日 - 版次: 3.1
這篇文章中的資訊適用於:
  • Microsoft Active Server Pages 4.0
關鍵字:?
kbmt kbaspobj kbcodesnippet kbhowto kbscript KB175167 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:175167
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com