SessionStateStoreProviderBase.GetItem 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
從會話數據存放區傳回唯讀會話狀態數據。
public:
abstract System::Web::SessionState::SessionStateStoreData ^ GetItem(System::Web::HttpContext ^ context, System::String ^ id, [Runtime::InteropServices::Out] bool % locked, [Runtime::InteropServices::Out] TimeSpan % lockAge, [Runtime::InteropServices::Out] System::Object ^ % lockId, [Runtime::InteropServices::Out] System::Web::SessionState::SessionStateActions % actions);
public abstract System.Web.SessionState.SessionStateStoreData GetItem (System.Web.HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out System.Web.SessionState.SessionStateActions actions);
abstract member GetItem : System.Web.HttpContext * string * bool * TimeSpan * obj * SessionStateActions -> System.Web.SessionState.SessionStateStoreData
Public MustOverride Function GetItem (context As HttpContext, id As String, ByRef locked As Boolean, ByRef lockAge As TimeSpan, ByRef lockId As Object, ByRef actions As SessionStateActions) As SessionStateStoreData
參數
- context
- HttpContext
目前要求的 HttpContext。
- locked
- Boolean
當這個方法傳回時,如果要求的會話專案在會話數據存放區上鎖定,則包含設定為 true
的布爾值;否則,false
。
- lockId
- Object
當這個方法傳回時,包含設定為目前要求的鎖定標識符的物件。 如需鎖定標識碼的詳細資訊,請參閱
- actions
- SessionStateActions
當這個方法傳回時,包含其中一個 SessionStateActions 值,指出目前的會話是否為未初始化的Cookie無會話。
傳回
SessionStateStoreData 填入工作階段資料存放區中的會話值和資訊。
範例
如需工作階段狀態存放區提供者實作的範例,請參閱 實作 Session-State 存放區提供者。
備註
當 EnableSessionState 屬性設定為 ReadOnly
時,SessionStateModule 物件會在要求開頭呼叫 AcquireRequestStateGetItem 方法。 如果 EnableSessionState 屬性設定為 true
,SessionStateModule 物件會改為呼叫 GetItemExclusive 方法。
GetItem 方法會傳回填入數據存放區會話資訊的 SessionStateStoreData 物件,並更新會話數據的到期日。 如果在資料存放區找不到工作階段項目資料,GetItem 方法會將 locked
out
參數設定為 false
,並傳回 null
。 這會導致 SessionStateModule 物件呼叫 CreateNewStoreData 方法,以在數據存放區中建立新的會話專案。
如果在數據存放區找到會話項目數據,但數據已鎖定,GetItem 方法會將 locked
out
參數設定為 true
、將 lockAge
out
參數設定為目前日期和時間減去鎖定專案的日期和時間(從數據存放區擷取),請將 lockId
out
參數設定為從數據存放區擷取的鎖定標識符, 與會傳回 null
。 這會導致 SessionStateModule 物件在半秒間隔后再次呼叫 GetItem 方法,嘗試擷取會話項目資訊。
如果 lockAge
out
參數的值設定為超過 ExecutionTimeout 值,則 SessionStateModule 物件會呼叫 ReleaseItemExclusive 方法來清除會話專案數據的鎖定,然後再次呼叫 GetItem 方法。
當 cookieless
和 regenerateExpiredSessionId
屬性都設定為 true
時,會使用 actionFlags
參數。 設定為 InitializeItem 的 actionFlags
值表示會話數據存放區中的專案是需要初始化的新會話。 會話數據存放區中未初始化的專案是由呼叫 CreateUninitializedItem 方法所建立。 如果會話數據存放區中的專案不是未初始化的專案,actionFlags
參數將會設定為零。
支援無 Cookie 會話的自訂工作階段狀態存放區實作者應將 actionFlags
out
參數設定為目前專案會話資料存放區傳回的值。 如果要求的會話存放區專案 actionFlags
參數值等於 InitializeItem 列舉值,則 GetItem 方法在設定 actionFlags
out
參數之後,應該將數據存放區中的值設定為零。