SessionStateStoreProviderBase.GetItemExclusive Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zwraca dane stanu sesji tylko do odczytu z magazynu danych sesji.
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
Parametry
- context
- HttpContext
HttpContext dla bieżącego żądania.
- locked
- Boolean
Gdy ta metoda zwróci wartość logiczną ustawioną na true
, jeśli blokada zostanie pomyślnie uzyskana; w przeciwnym razie false
.
- lockAge
- TimeSpan
Gdy ta metoda zwraca wartość , zawiera obiekt TimeSpan ustawiony na czas, przez który element w magazynie danych sesji został zablokowany.
- lockId
- Object
Gdy ta metoda zostanie zwrócona, zawiera obiekt, który jest ustawiony na identyfikator blokady dla bieżącego żądania. Aby uzyskać szczegółowe informacje na temat identyfikatora blokady, zobacz "Blokowanie danych Session-Store" w podsumowaniu klasy SessionStateStoreProviderBase.
- actions
- SessionStateActions
Gdy ta metoda zostanie zwrócona, zawiera jedną z wartości SessionStateActions wskazującą, czy bieżąca sesja jest niezainicjowaną sesją bez plików cookie.
Zwraca
SessionStateStoreData wypełniony wartościami sesji i informacjami z magazynu danych sesji.
Przykłady
Aby zapoznać się z przykładem implementacji dostawcy magazynu stanów sesji, zobacz Implementowanie dostawcy magazynu Session-State.
Uwagi
Obiekt SessionStateModule wywołuje metodę GetItemExclusive na początku żądania, podczas zdarzenia AcquireRequestState, gdy atrybut EnableSessionState jest ustawiony na true
, co jest ustawieniem domyślnym. Jeśli atrybut EnableSessionState jest ustawiony na wartość ReadOnly
, obiekt SessionStateModule zamiast tego wywołuje metodę GetItem.
Metoda GetItemExclusive zwraca obiekt SessionStateStoreData wypełniony informacjami o sesji z magazynu danych, aktualizuje datę wygaśnięcia przechowywanych danych i blokuje dane elementu sesji w magazynie danych przez czas trwania żądania. Jeśli w magazynie danych nie znaleziono danych elementu sesji, metoda GetItemExclusive ustawia parametr locked
out
na false
i zwraca null
. Powoduje to wywołanie metody CreateNewStoreData obiektu SessionStateModule w celu utworzenia nowego elementu sesji w magazynie danych. Jeśli dane elementu sesji znajdują się w magazynie danych, ale dane są zablokowane, metoda GetItemExclusive ustawia parametr locked
out
na true
, ustawia parametr lockAge
out
na bieżącą datę i godzinę minus datę i godzinę po zablokowaniu elementu (który jest pobierany z magazynu danych), ustawia parametr lockId
out
na identyfikator blokady pobrany z magazynu danych, funkcja i zwraca null
. Powoduje to, że obiekt SessionStateModule wywołać metodę GetItemExclusive ponownie po przerwie pół sekundy, aby spróbować pobrać informacje o elemencie sesji i uzyskać blokadę danych. Jeśli wartość parametru lockAge
out
jest ustawiona na przekroczenie wartości ExecutionTimeout, SessionStateModule wywołuje metodę ReleaseItemExclusive w celu wyczyszczenia blokady danych elementu sesji, a następnie ponownie wywołuje metodę GetItemExclusive.
Parametr actionFlags
jest używany, gdy atrybuty cookieless
i regenerateExpiredSessionId
są ustawione na wartość true
. Wartość actionFlags
ustawiona na InitializeItem wskazuje, że wpis w magazynie danych sesji jest nową sesją, która wymaga inicjowania. Niezainicjowane wpisy w magazynie danych sesji są tworzone przez wywołanie metody CreateUninitializedItem. Jeśli element z magazynu danych sesji nie jest niezainicjowanym elementem, parametr actionFlags
zostanie ustawiony na zero.
Niestandardowe implementacje magazynu stanu sesji, które obsługują sesje bez plików cookie, powinny ustawić parametr actionFlags
out
na wartość zwracaną z magazynu danych sesji dla bieżącego elementu. Jeśli wartość parametru actionFlags
żądanego elementu magazynu sesji jest równa wartości wyliczenia InitializeItem, metoda GetItemExclusive powinna ustawić wartość w magazynie danych na zero po ustawieniu parametru actionFlags
out
.