共用方式為


SessionStateStoreProviderBase.GetItemExclusive 方法

定義

從會話數據存放區傳回唯讀會話狀態數據。

public:
 abstract System::Web::SessionState::SessionStateStoreData ^ GetItemExclusive(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 GetItemExclusive (System.Web.HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out System.Web.SessionState.SessionStateActions actions);
abstract member GetItemExclusive : System.Web.HttpContext * string * bool * TimeSpan * obj * SessionStateActions -> System.Web.SessionState.SessionStateStoreData
Public MustOverride Function GetItemExclusive (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

當這個方法傳回時,會包含布爾值,如果成功取得鎖定,則會設定為 true;否則,false

lockAge
TimeSpan

當這個方法傳回時,會包含一個 TimeSpan 物件,該物件會設定為會話數據存放區中專案已鎖定的時間量。

lockId
Object

當這個方法傳回時,包含設定為目前要求的鎖定標識符的物件。 如需鎖定標識碼的詳細資訊,請參閱 類別摘要中的<鎖定 Session-Store 數據>。

actions
SessionStateActions

當這個方法傳回時,包含其中一個 SessionStateActions 值,指出目前的會話是否為未初始化的Cookie無會話。

傳回

SessionStateStoreData 填入工作階段資料存放區中的會話值和資訊。

範例

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

備註

EnableSessionState 屬性設定為 true時,SessionStateModule 物件會在要求開頭呼叫 AcquireRequestStateGetItemExclusive 方法,這是預設值。 如果 EnableSessionState 屬性設定為 ReadOnlySessionStateModule 物件會改為呼叫 GetItem 方法。

GetItemExclusive 方法會傳回填入數據存放區會話資訊的 SessionStateStoreData 物件、更新儲存數據的到期日,以及鎖定要求持續時間的數據存放區上的會話項目數據。 如果在資料存放區找不到工作階段項目資料,GetItemExclusive 方法會將 lockedout 參數設定為 false,並傳回 null。 這會導致 SessionStateModule 物件呼叫 CreateNewStoreData 方法,以在數據存放區中建立新的會話專案。 如果在數據存放區找到會話項目數據,但數據已鎖定,GetItemExclusive 方法會將 lockedout 參數設定為 true、將 lockAgeout 參數設定為目前日期和時間減去鎖定專案的日期和時間(從數據存放區擷取),請將 lockIdout 參數設定為從數據存放區擷取的鎖定標識符, 與會傳回 null。 這會導致 SessionStateModule 物件在半秒間隔后再次呼叫 GetItemExclusive 方法,嘗試擷取會話專案資訊並取得數據的鎖定。 如果 lockAgeout 參數的值設定為超過 ExecutionTimeout 值,則 SessionStateModule 會呼叫 ReleaseItemExclusive 方法來清除會話專案數據的鎖定,然後再次呼叫 GetItemExclusive 方法。

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

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

適用於

另請參閱