SessionStateStoreProviderBase.GetItemExclusive 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
从会话数据存储返回只读会话状态数据。
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。
- locked
- Boolean
此方法返回时,包含一个布尔值,该值设置为在成功获取锁时 true
;否则,false
。
- lockId
- Object
此方法返回时,包含一个对象,该对象设置为当前请求的锁定标识符。 有关锁定标识符的详细信息,请参阅 SessionStateStoreProviderBase 类摘要中的“锁定 Session-Store 数据”。
- actions
- SessionStateActions
此方法返回时,包含 SessionStateActions 值之一,指示当前会话是否为未初始化的无 Cookie 会话。
返回
使用会话数据存储中的会话值和信息填充 SessionStateStoreData。
示例
有关会话状态存储提供程序实现的示例,请参阅 实现 Session-State Store 提供程序。
注解
当 AcquireRequestStateEnableSessionState 属性设置为默认 true
时,SessionStateModule 对象在请求开始时调用 GetItemExclusive 方法。 如果 EnableSessionState 属性设置为 ReadOnly
,SessionStateModule 对象将改为调用 GetItem 方法。
GetItemExclusive 方法返回一个 SessionStateStoreData 对象,该对象使用数据存储中的会话信息填充,更新存储数据的到期日期,并在请求期间锁定数据存储中的会话项数据。 如果在数据存储中找不到会话项数据,GetItemExclusive 方法会将 locked
out
参数设置为 false
并返回 null
。 这会导致 SessionStateModule 对象调用 CreateNewStoreData 方法在数据存储中创建新的会话项。 如果在数据存储中找到会话项数据,但数据被锁定,GetItemExclusive 方法将 locked
out
参数设置为 true
,将 lockAge
out
参数设置为当前日期和时间减去锁定项(从数据存储检索的日期和时间),将 lockId
out
参数设置为从数据存储中检索的锁标识符, 并返回 null
。 这会导致 SessionStateModule 对象在半秒间隔后再次调用 GetItemExclusive 方法,以尝试检索会话项信息并获取对数据的锁定。 如果 lockAge
out
参数的值设置为超过 ExecutionTimeout 值,则 SessionStateModule 调用 ReleaseItemExclusive 方法以清除会话项数据的锁,然后再次调用 GetItemExclusive 方法。
当 cookieless
和 regenerateExpiredSessionId
属性都设置为 true
时,将使用 actionFlags
参数。 设置为 InitializeItem 的 actionFlags
值指示会话数据存储中的条目是需要初始化的新会话。 会话数据存储中的未初始化条目是通过调用 CreateUninitializedItem 方法创建的。 如果会话数据存储中的项不是未初始化的项,则 actionFlags
参数将设置为零。
支持无 Cookie 会话的自定义会话状态存储实现者应将 actionFlags
out
参数设置为从当前项的会话数据存储返回的值。 如果请求的会话存储项的 actionFlags
参数值等于 InitializeItem 枚举值,则在设置 actionFlags
out
参数后,GetItemExclusive 方法应将数据存储中的值设置为零。