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存储提供程序

注解

在 事件期间AcquireRequestState,当 属性设置为 trueEnableSessionState,对象SessionStateModule在请求开始时调用 GetItemExclusive 方法,这是默认值。 如果 属性 EnableSessionState 设置为 ReadOnly,则 SessionStateModule 对象将改为调用 GetItem 方法。

方法 GetItemExclusive 返回一个 SessionStateStoreData 对象,该对象填充了数据存储中的会话信息,更新存储数据的到期日期,并在请求期间锁定数据存储中的会话项数据。 如果在数据存储区中找不到会话项数据,该方法GetItemExclusiveoutlocked参数设置为 false 并返回 null。 这会导致 SessionStateModule 对象调用 CreateNewStoreData 方法,以在数据存储区中创建新的会话项。 如果在数据存储中找到会话项数据,但数据被锁定,则GetItemExclusive方法将 参数设置为 lockedouttrue,将outlockAge参数设置为当前日期和时间减去该项锁定的日期和时间 (从数据存储) 检索,将 参数设置为lockIdout从数据存储中检索的锁标识符, 和 返回 null。 这会导致对象在 SessionStateModule 半秒间隔后再次调用 GetItemExclusive 方法,以尝试检索会话项信息并获取对数据的锁定。 如果参数设置为的值lockAge超过 值,则 调用 ReleaseItemExclusiveSessionStateModule 方法以清除会话项数据的锁定,然后再次调用 GetItemExclusive 方法。ExecutionTimeoutout

actionFlags当 和 regenerateExpiredSessionId 属性都设置为 truecookieless,使用 参数。 actionFlags设置为 InitializeItem 的值指示会话数据存储中的条目是需要初始化的新会话。 会话数据存储中的未初始化条目是通过调用 CreateUninitializedItem 方法创建的。 如果会话数据存储中的项不是未初始化的项,则 actionFlags 参数将设置为零。

支持无 Cookie 会话的自定义会话状态存储实施程序应将 actionFlagsout 参数设置为从当前项的会话数据存储返回的值。 actionFlags如果请求的会话存储项的参数值等于InitializeItem枚举值,则GetItemExclusive方法应在设置 actionFlagsout 参数后将数据存储中的值设置为零。

适用于

另请参阅