Sdílet prostřednictvím


SessionStateStoreProviderBase Třída

Definice

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
SessionStateStoreProviderBase

Příklady

Příklad implementace zprostředkovatele úložiště stavu relace najdete v tématu Implementace poskytovatele úložiště Session-State.

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 relací.

<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í poskytovatele ú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í o relaci, jako je hodnota časového limitu.

Data relací v rámci každé aplikace ASP.NET jsou pro každou SessionID vlastnost uložena samostatně. ASP.NET aplikace nesdílely data relací.

Můžete zadat vlastní SessionStateStoreProviderBase implementaci pro ASP.NET aplikace nastavením mode atributu elementu sessionState configuration na Custom a customProvider atribut na název 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 reakce na souběžné požadavky, je možné, že se souběžné požadavky pokusí získat přístup ke stejným informacím o relaci. Představte si scénář, kdy 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 spustit na webovém serveru souběžně v různých vláknech. Pokud ASP.NET stránky pro každou proměnnou stavu relace přístupu ke zdroji 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, SessionStateModule třídy a SessionStateStoreProviderBase zahrnují funkci zámku, která výhradně uzamkne položku úložiště relací pro konkrétní relaci po dobu trvání provádění ASP.NET stránky. Všimněte si, že i když EnableSessionState je atribut označený jako ReadOnly, ostatní ASP.NET stránky ve stejné aplikaci můžou zapisovat do úložiště relací, takže žádost o data relace jen pro čtení z úložiště může stále čekat na uvolnění uzamčených dat.

Zámek je nastaven na data úložiště relací na začátku požadavku při 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í metody nebo GetItem narazí na GetItemExclusive data uzamčené relace, bude znovu požadovat data relace v půlsekundových intervalech, dokud se zámek nespustí nebo doba, po kterou byla data relace uzamčena, překročí hodnotu ExecutionTimeout vlastnosti. Pokud dojde k překročení časového limitu SessionStateModule spuštění, objekt zavolá metodu ReleaseItemExclusive pro uvolnění dat úložiště relací a vyžádá si 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ěď, je možné provést pokus o nastavení a uvolnění dat úložiště stavu relace, která již byla uvolněna a upravena jinou relací. Aby se této situaci zabránilo GetItem , vrátí metody a GetItemExclusive identifikátor zámku. Tento identifikátor zámku musí být součástí každého požadavku na úpravu zamčených dat úložiště relací. Data úložiště relací se změní pouze v případě, že identifikátor zámku v úložišti dat odpovídá identifikátoru zámku zadanému SessionStateModulenástrojem .

Odstranění dat úložiště relací s vypršenou platností

Abandon Když je metoda volána 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 na server budoucích požadavků na relaci. Odstranění dat relace s vypršenou platností SessionStateStoreProviderBase je na implementaci.

Konstruktory

SessionStateStoreProviderBase()

Inicializuje novou instanci SessionStateStoreProviderBase třídy.

Vlastnosti

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 odkaz na poskytovatele během konfigurace.

(Zděděno od ProviderBase)

Metody

CreateNewStoreData(HttpContext, Int32)

Vytvoří nový SessionStateStoreData objekt, který se má použít 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á se SessionStateModule objektem na konci požadavku.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(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á aktuální Type instanci.

(Zděděno od Object)
Initialize(String, NameValueCollection)

Inicializuje tvůrce konfigurace.

(Zděděno od ProviderBase)
InitializeRequest(HttpContext)

Volá objekt SessionStateModule pro inicializaci podle požadavků.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(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 hodnotami z aktuálního požadavku a vymaže zámek dat.

SetItemExpireCallback(SessionStateItemExpireCallback)

Nastaví odkaz na SessionStateItemExpireCallback delegáta pro událost definovanou Session_OnEnd v souboru Global.asax.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro

Viz také