Share via


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

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

actions
SessionStateActions

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

傳回

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

範例

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

備註

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

方法 GetItemExclusiveSessionStateStoreData 從資料存放區傳回填入會話資訊的物件、更新預存資料的到期日,並在要求期間鎖定資料存放區上的會話專案資料。 如果在資料存放區中找不到會話專案資料, GetItemExclusive 此方法會將 lockedout 參數設定為 false ,並傳 null 回 。 這會導致 SessionStateModule 物件呼叫 CreateNewStoreData 方法,以在資料存放區中建立新的會話專案。 如果在資料存放區找到會話專案資料,但資料已鎖定, GetItemExclusive 此方法會將 參數 true 設定 lockedout 為 ,並將 lockAgeout 參數設定為目前的日期和時間減去鎖定 (從資料存放區擷取的日期和時間,將 參數設定 lockIdout 為從資料) 存放區擷取的鎖定識別碼, 和 會傳 null 回 。 這會導致 SessionStateModule 物件在半秒間隔之後再次呼叫 GetItemExclusive 方法,以嘗試擷取會話專案資訊,並取得資料的鎖定。 lockAgeout 如果參數設定的值超過 ExecutionTimeout 值,則 呼叫 ReleaseItemExclusiveSessionStateModule 方法以清除會話專案資料的鎖定,然後再次呼叫 GetItemExclusive 方法。

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

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

適用於

另請參閱