共用方式為


SessionStateStoreProviderBase.GetItem 方法

定義

從工作階段資料存放區傳回唯讀工作階段狀態資料。

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

id
String

目前要求的 SessionID

locked
Boolean

這個方法傳回時,包含布林值 (Boolean),如果要求的工作階段項目鎖定在工作階段資料存放區,則該值會設定為 true,否則會設定為 false

lockAge
TimeSpan

這個方法傳回時,包含 TimeSpan 物件,該物件設定為工作階段資料存放區中已鎖定項目的時間長度。

lockId
Object

這個方法傳回時,包含設定為目前要求之鎖定識別項的物件。 如需鎖定識別項的詳細資訊,請參閱 SessionStateStoreProviderBase 類別摘要中的<鎖定工作階段存放區資料>。

actions
SessionStateActions

這個方法傳回時,包含其中一個 SessionStateActions 值,指出目前的工作階段是否為未初始化之無 Cookie 的工作階段。

傳回

填入工作階段資料存放區之工作階段值和資訊的 SessionStateStoreData

範例

如需會話狀態存放區提供者實作的範例,請參閱 實作 Session-State 存放區提供者

備註

當 屬性SessionStateModule設定ReadOnly為 時EnableSessionStateAcquireRequestState,物件GetItem會在要求開頭呼叫 方法。 EnableSessionState如果屬性設定為 true,則SessionStateModule物件會改為呼叫 GetItemExclusive 方法。

方法 GetItemSessionStateStoreData 從數據存放區傳回填入會話信息的物件,並更新會話數據的到期日。 如果在資料存放區中找不到工作階段項目資料, GetItem 此方法會將 lockedout 參數設定為 false ,並傳 null回 。 這會導致 SessionStateModule 物件呼叫 CreateNewStoreData 方法,以在數據存放區中建立新的會話專案。

如果在數據存放區找到會話項目數據,但數據已鎖定,GetItem此方法會將 參數true設定lockedout為 ,並將 lockAgeout 參數設定為目前的日期和時間減去鎖定 (從數據存放區擷取的日期和時間,將 參數設定lockIdout為從數據) 存放區擷取的鎖定標識符, 與會傳null回 。 這會導致 SessionStateModule 物件在半秒間隔之後再次呼叫 GetItem 方法,以嘗試擷取會話項目資訊。

lockAgeout如果參數設定為超過ExecutionTimeout值的值,則SessionStateModule物件會呼叫 ReleaseItemExclusive 方法以清除會話專案數據的鎖定,然後再次呼叫 GetItem 方法。

actionFlags當和 regenerateExpiredSessionId 屬性都設定為 truecookieless,會使用 參數。 設定 actionFlags 為的值 InitializeItem ,表示會話數據存放區中的專案是需要初始化的新會話。 會話數據存放區中的未初始化專案是由 方法的呼叫 CreateUninitializedItem 所建立。 如果會話數據存放區中的專案不是未初始化的專案,參數 actionFlags 將會設定為零。

支援無 Cookie 會話的自定義工作階段狀態存放區實作程式,應該將 參數設定 actionFlagsout 為目前專案的工作階段資料存放區所傳回的值。 actionFlags如果要求的會話存放區項目參數值等於InitializeItem列舉值,GetItem則方法在設定actionFlagsout參數之後,應該將數據存放區中的值設定為零。

適用於

另請參閱