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

此方法返回时,包含一个布尔值,该值设置为 true 在会话数据存储中锁定所请求的会话项;否则为 false

lockAge
TimeSpan

此方法返回时,包含一个 TimeSpan 对象,该对象设置为会话数据存储中项锁定的时间量。

lockId
Object

此方法返回时,包含一个对象,该对象设置为当前请求的锁定标识符。 有关锁定标识符的详细信息,请参阅类摘要中的 SessionStateStoreProviderBase “锁定 Session-Store 数据”。

actions
SessionStateActions

此方法返回时,包含其中 SessionStateActions 一个值,指示当前会话是否为未初始化的无 Cookie 会话。

返回

SessionStateStoreData使用会话数据存储中的会话值和信息进行填充。

示例

有关会话状态存储提供程序实现的示例,请参阅 “实现 Session-State 存储提供程序”。

注解

当属性设置为SessionStateModule时,GetItemAcquireRequestState对象EnableSessionState在请求开始时调用ReadOnly该方法。 EnableSessionState如果该属性设置为true,则对象SessionStateModule将改为调用该方法GetItemExclusive

该方法 GetItem 返回一个 SessionStateStoreData 用数据存储中的会话信息填充的对象,并更新会话数据的到期日期。 如果在数据存储中找不到会话项数据,该方法 GetItem 将参数 lockedout 设置为 false 并返回 null。 这会导致 SessionStateModule 对象调用 CreateNewStoreData 方法以在数据存储中创建新的会话项。

如果在数据存储中找到会话项数据,但数据被锁定,该方法 GetItemlockedout 参数设置为 true,将 lockAgeout 参数设置为当前日期和时间减去锁定项(从数据存储检索的日期和时间),将 lockIdout 参数设置为从数据存储检索的锁定标识符, 并返回 null。 这会导致 SessionStateModule 对象在半秒间隔后再次调用 GetItem 该方法,以尝试检索会话项信息。

如果参数设置为超过该值的值lockAgeout,则ExecutionTimeout对象将调用SessionStateModule该方法以清除会话项数据的锁,然后再次调用该方法ReleaseItemExclusiveGetItem

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

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

适用于

另请参阅