Udostępnij za pośrednictwem


SessionStateStoreProviderBase.GetItem Metoda

Definicja

Zwraca dane stanu sesji tylko do odczytu z magazynu danych sesji.

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

Parametry

context
HttpContext

HttpContext dla bieżącego żądania.

id
String

SessionID dla bieżącego żądania.

locked
Boolean

Gdy ta metoda zwróci wartość logiczną ustawioną na true, jeśli żądany element sesji jest zablokowany w magazynie danych sesji; 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ę GetItem na początku żądania, podczas zdarzenia AcquireRequestState, gdy atrybut EnableSessionState jest ustawiony na wartość ReadOnly. Jeśli atrybut EnableSessionState jest ustawiony na wartość true, obiekt SessionStateModule zamiast tego wywołuje metodę GetItemExclusive.

Metoda GetItem zwraca obiekt SessionStateStoreData wypełniony informacjami o sesji z magazynu danych i aktualizuje datę wygaśnięcia danych sesji. Jeśli w magazynie danych nie znaleziono danych elementu sesji, metoda GetItem ustawia parametr lockedout 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 GetItem ustawia parametr lockedout na true, ustawia parametr lockAgeout na bieżącą datę i godzinę minus datę i godzinę po zablokowaniu elementu (który jest pobierany z magazynu danych), ustawia parametr lockIdout na identyfikator blokady pobrany z magazynu danych, funkcja i zwraca null. Powoduje to, że obiekt SessionStateModule wywołać metodę GetItem ponownie po przerwie pół sekundy, aby spróbować pobrać informacje o elemencie sesji.

Jeśli wartość parametru lockAgeout jest ustawiona na przekroczenie wartości ExecutionTimeout, obiekt SessionStateModule wywołuje metodę ReleaseItemExclusive w celu wyczyszczenia blokady danych elementu sesji, a następnie wywołuje metodę GetItem ponownie.

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 actionFlagsout 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 GetItem powinna ustawić wartość w magazynie danych na zero po ustawieniu parametru actionFlagsout.

Dotyczy

Zobacz też