控制工作階段狀態
更新:2007 年 11 月
Microsoft ASP.NET 提供 HttpSessionState 物件,您可以用此物件來儲存跨多個要求的使用者工作階段 (Session) 資訊。ASP.NET 工作階段管理功能既具彈性又很穩定,而且您也可以橫跨 Web 伺服陣列來使用。
不使用 Cookie 的工作階段考量
在預設情況下,ASP.NET 工作階段物件會使用用戶端 Cookie 來存放識別項。這個識別項是用以在往返伺服器過程之間尋找工作階段。然而,ASP.NET 也支援 Cookieless 的工作階段模式,其從一開始便會將用戶端重新導向至包含該工作階段 ID 的新 URL,然後再從該 URL 中自動剖析出這個工作階段 ID。
對於使用工作階段狀態的 ASP.NET Mobile Web 網頁,您必須考量下列因素:
有些行動裝置和閘道器並不支援 Cookie。在這些情況下,Web 伺服器必須將工作階段管理設定為 Cookieless 模式。
一些行動裝置在經過 Cookieless 工作階段管理的重新導向之後,會在處理相對 URL 時發生問題。
使用 Cookie 的替代方式
有些行動裝置並不支援 Cookie,因此您必須為需要持續性 (Persistent) 狀態的案例尋找適用的替代技術。例如,當使用者登入網頁時,應用程式可以指派要在工作階段剩餘期間使用的登入 ID。通常,您會使用這個驗證 (稱為以 Cookie 為基礎的驗證) 表單的 Cookie。然而,以 Cookie 為基礎的驗證並非未支援 Cookie 之裝置的選項。這時您必須依賴其他的狀態管理機制。
工作階段狀態
其中一個替代方式是使用工作階段狀態。因為您可以將工作階段狀態設定成在不使用 Cookie 情況下工作,所以該使用者可以保留這個在工作階段狀態中的 ID。然而,這項技術的缺點之一,就是資訊會隨著工作階段過期。另一個不利條件即是此技術永遠需要工作階段狀態已在使用。
隱藏的變數
ASP.NET Mobile Web 網頁不包括可用於寫出隱藏變數的行動控制項。而是由表單在 MobilePage 類別內,提供名為 HiddenVariables 的集合。所有存放在這個集合中的名稱/數值的組合都將保存為隱藏變數。HiddenVariables 集合會在表單送出時自動重新填入這些隱藏變數。
這個替代方式使用網頁上的隱藏變數。隱藏變數會自動重新送出做為表單提交的一部分,不論提交至相同網頁或另一個網頁。