SessionStateStoreProviderBase Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Definuje požadované členy zprostředkovatele stavu relace pro úložiště dat.
public ref class SessionStateStoreProviderBase abstract : System::Configuration::Provider::ProviderBase
public abstract class SessionStateStoreProviderBase : System.Configuration.Provider.ProviderBase
type SessionStateStoreProviderBase = class
inherit ProviderBase
Public MustInherit Class SessionStateStoreProviderBase
Inherits ProviderBase
- Dědičnost
Příklady
Příklad implementace zprostředkovatele úložiště stavu relace najdete v tématu Implementace poskytovatele úložiště Session-State Store.
Následující příklad kódu ukazuje soubor Web.config pro ASP.NET aplikaci, která je nakonfigurovaná tak, aby používala vlastního zprostředkovatele úložiště stavu relace.
<configuration>
<connectionStrings>
<add name="OdbcSessionServices" connectionString="DSN=SessionState;" />
</connectionStrings>
<system.web>
<sessionState
mode="Custom"
customProvider="OdbcSessionProvider">
<providers>
<add name="OdbcSessionProvider"
type="Samples.AspNet.Session.OdbcSessionStateStore"
connectionStringName="OdbcSessionServices" />
</providers>
</sessionState>
</system.web>
</configuration>
Poznámky
ASP.NET stav relace čte a zapisuje data relace z a do úložiště dat pomocí zprostředkovatele úložiště stavu relace. Zprostředkovatel úložiště stavu relace je třída, která dědí SessionStateStoreProviderBase abstraktní třídu a přepíše její členy implementacemi specifickými pro úložiště dat. Zprostředkovatel úložiště stavu relace je volána SessionStateModule třídou během zpracování stránky ASP.NET ke komunikaci s úložištěm dat pro ukládání a načítání proměnných relace a souvisejících informací relace, jako je hodnota časového limitu.
Data relace v rámci každé ASP.NET aplikace se ukládají samostatně pro každou SessionID vlastnost. ASP.NET aplikace nesdílely data relace.
Vlastní implementaci aplikace ASP.NET můžete zadat SessionStateStoreProviderBase nastavením mode atributu sessionState elementu konfigurace na Custom a customProvider atribut názvu vlastního zprostředkovatele, jak je znázorněno v příkladu pro toto téma.
Uzamčení dat úložiště relací
Vzhledem k tomu, že ASP.NET aplikace jsou vícevláknové, aby podporovaly reagování na souběžné požadavky, je možné, že se souběžné žádosti pokusí o přístup ke stejným informacím relace. Představte si scénář, ve kterém více rámců v sadě rámců přistupuje ke stejné aplikaci. Samostatné požadavky pro každý rámec v sadě rámců lze provádět na webovém serveru souběžně na různých vláknech. Pokud ASP.NET stránky pro jednotlivé proměnné stavu relace zdrojového přístupu rámce, můžete mít více vláken, které přistupují k úložišti relací současně.
Aby nedocházelo ke kolizím dat v úložišti relací a neočekávanému chování stavu relace, zahrnují funkce SessionStateStoreProviderBase uzamčení, SessionStateModule které výhradně uzamkne položku úložiště relací pro určitou relaci po dobu trvání provádění stránky ASP.NET. Všimněte si, že i když EnableSessionState je atribut označený jako ReadOnly, mohou být ostatní ASP.NET stránky ve stejné aplikaci schopny zapisovat do úložiště relací, takže požadavek na data relace jen pro čtení z úložiště může skončit čekáním na uvolnění uzamčených dat.
Zámek je nastaven na data úložiště relací na začátku požadavku v volání GetItemExclusive metody. Po dokončení požadavku se zámek uvolní během volání SetAndReleaseItemExclusive metody.
SessionStateModule Pokud objekt během volání GetItemExclusiveGetItem nebo metody narazí na zamknutá data relace, bude znovu požadovat data relace v půlsekundových intervalech, dokud se zámek uvolní nebo doba, po kterou byla data relace uzamčena, překročí hodnotu ExecutionTimeout vlastnosti. Pokud dojde k překročení časového limitu spuštění, SessionStateModule objekt zavolá metodu ReleaseItemExclusive pro uvolnění dat úložiště relací a požádá o data úložiště relací v daném okamžiku.
Vzhledem k tomu, že uzamčená data úložiště relací mohla být uvolněna voláním ReleaseItemExclusive metody v samostatném vlákně před voláním SetAndReleaseItemExclusive metody pro aktuální odpověď, může být proveden pokus nastavit a uvolnit data úložiště stavu relace, která již byla vydána a změněna jinou relací. Aby se této situaci zabránilo, GetItem vrátí metody GetItemExclusive identifikátor zámku. Tento identifikátor zámku musí být součástí každého požadavku, aby bylo možné upravit uzamčená data úložiště relací. Data úložiště relací jsou upravena pouze v případě, že identifikátor zámku v úložišti dat odpovídá identifikátoru zámku zadanému uživatelem SessionStateModule.
Odstranění dat úložiště relací s vypršenou platností
Abandon Pokud je volána metoda pro konkrétní relaci, data pro danou relaci se odstraní z úložiště dat pomocí RemoveItem metody. V opačném případě zůstanou data v úložišti dat relace k serveru budoucích požadavků na relaci. Je až do SessionStateStoreProviderBase implementace, aby se odstranila data relace s vypršenou platností.
Konstruktory
| Name | Description |
|---|---|
| SessionStateStoreProviderBase() |
Inicializuje novou instanci SessionStateStoreProviderBase třídy. |
Vlastnosti
| Name | Description |
|---|---|
| Description |
Získá stručný popis vhodný pro zobrazení v nástrojích pro správu nebo jiných uživatelských rozhraních (UI). (Zděděno od ProviderBase) |
| Name |
Získá popisný název použitý k odkazování na zprostředkovatele během konfigurace. (Zděděno od ProviderBase) |
Metody
| Name | Description |
|---|---|
| CreateNewStoreData(HttpContext, Int32) |
Vytvoří nový SessionStateStoreData objekt, který se použije pro aktuální požadavek. |
| CreateUninitializedItem(HttpContext, String, Int32) |
Přidá novou položku stavu relace do úložiště dat. |
| Dispose() |
Uvolní všechny prostředky používané implementací SessionStateStoreProviderBase . |
| EndRequest(HttpContext) |
Volá objekt SessionStateModule na konci požadavku. |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetItem(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions) |
Vrátí data stavu relace jen pro čtení z úložiště dat relace. |
| GetItemExclusive(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions) |
Vrátí data stavu relace jen pro čtení z úložiště dat relace. |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| Initialize(String, NameValueCollection) |
Inicializuje tvůrce konfigurace. (Zděděno od ProviderBase) |
| InitializeRequest(HttpContext) |
Volá objekt SessionStateModule pro inicializaci jednotlivých požadavků. |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| ReleaseItemExclusive(HttpContext, String, Object) |
Uvolní zámek položky v úložišti dat relace. |
| RemoveItem(HttpContext, String, Object, SessionStateStoreData) |
Odstraní data položek z úložiště dat relace. |
| ResetItemTimeout(HttpContext, String) |
Aktualizuje datum a čas vypršení platnosti položky v úložišti dat relace. |
| SetAndReleaseItemExclusive(HttpContext, String, SessionStateStoreData, Object, Boolean) |
Aktualizuje informace o položce relace v úložišti dat stavu relace s hodnotami z aktuálního požadavku a vymaže zámek dat. |
| SetItemExpireCallback(SessionStateItemExpireCallback) |
Nastaví odkaz na delegáta SessionStateItemExpireCallback |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |