SessionStateStoreProviderBase Classe

Definizione

Definisce i membri necessari di un provider dello stato sessione per un archivio dati.

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
Ereditarietà
SessionStateStoreProviderBase

Esempio

Per un esempio di implementazione del provider dell'archivio stati sessione, vedere Implementazione di un provider di archiviazione Session-State.

Nell'esempio di codice seguente viene illustrato il file di Web.config per un'applicazione ASP.NET configurata per l'uso di un provider dell'archivio stati sessione personalizzato.

<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>

Commenti

ASP.NET stato sessione legge e scrive i dati della sessione da e in un archivio dati usando un provider di archivio stati sessione. Un provider dell'archivio stati sessione è una classe che eredita la classe astratta ed esegue l'override SessionStateStoreProviderBase dei relativi membri con implementazioni specifiche dell'archivio dati. Il provider dell'archivio stati sessione viene chiamato dalla SessionStateModule classe durante l'elaborazione di una pagina di ASP.NET per comunicare con l'archivio dati per l'archiviazione e il recupero delle variabili di sessione e le informazioni di sessione correlate, ad esempio il valore di timeout.

I dati di sessione all'interno di ogni applicazione ASP.NET vengono archiviati separatamente per ogni SessionID proprietà. ASP.NET applicazioni non condividono i dati della sessione.

È possibile specificare un'implementazione personalizzata SessionStateStoreProviderBase per un'applicazione ASP.NET impostando l'attributo mode dell'elemento sessionState di configurazione su Custom e l'attributo customProvider sul nome del provider personalizzato, come illustrato nell'esempio per questo argomento.

Blocco dei dati dell'archivio sessioni

Poiché ASP.NET applicazioni sono multithreading per supportare la risposta alle richieste simultanee, è possibile che le richieste simultanee tentino di accedere alle stesse informazioni di sessione. Si consideri uno scenario in cui più fotogrammi in un frameset accedono tutti alla stessa applicazione. Le richieste separate per ogni frame nel frameset possono essere eseguite contemporaneamente nel server Web in thread diversi. Se le pagine ASP.NET per ogni origine frame accedono alle variabili dello stato sessione, è possibile che più thread accedano contemporaneamente all'archivio sessioni.

Per evitare conflitti di dati nell'archivio sessioni e comportamento imprevisto dello stato sessione, le SessionStateModule classi e SessionStateStoreProviderBase includono la funzionalità di blocco che blocca in modo esclusivo l'elemento dell'archivio sessioni per una determinata sessione per la durata dell'esecuzione di una pagina di ASP.NET. Si noti che anche se l'attributo EnableSessionState è contrassegnato come ReadOnly, altre pagine ASP.NET nella stessa applicazione potrebbero essere in grado di scrivere nell'archivio sessioni, pertanto una richiesta di dati di sessione di sola lettura dall'archivio potrebbe comunque finire in attesa che i dati bloccati vengano liberati.

Un blocco viene impostato sui dati dell'archivio sessioni all'inizio della richiesta, nella chiamata al GetItemExclusive metodo . Al termine della richiesta, il blocco viene rilasciato durante la chiamata al SetAndReleaseItemExclusive metodo .

Se l'oggetto SessionStateModule rileva dati di sessione bloccati durante la chiamata a o al GetItemExclusiveGetItem metodo , richiederà nuovamente i dati della sessione a intervalli di metà secondo fino a quando il blocco non viene rilasciato o la quantità di tempo in cui i dati della sessione sono stati bloccati superano il valore della ExecutionTimeout proprietà. Se il timeout di esecuzione viene superato, l'oggetto SessionStateModule chiamerà il ReleaseItemExclusive metodo per liberare i dati dell'archivio sessioni e richiedere i dati dell'archivio sessioni in quel momento.

Poiché i dati dell'archivio sessioni bloccati potrebbero essere stati liberati da una chiamata al ReleaseItemExclusive metodo su un thread separato prima della chiamata al SetAndReleaseItemExclusive metodo per la risposta corrente, è possibile eseguire un tentativo di impostare e rilasciare i dati dell'archivio stati sessione già rilasciati e modificati da un'altra sessione. Per evitare questa situazione, i GetItem metodi e GetItemExclusive restituiscono un identificatore di blocco. Questo identificatore di blocco deve essere incluso in ogni richiesta per modificare i dati dell'archivio sessioni bloccati. I dati dell'archivio sessioni vengono modificati solo se l'identificatore di blocco nell'archivio dati corrisponde all'identificatore di blocco fornito da SessionStateModule.

Eliminazione dei dati dell'archivio sessioni scaduti

Quando viene chiamato il Abandon metodo per una sessione specifica, i dati per tale sessione vengono eliminati dall'archivio dati usando il RemoveItem metodo . In caso contrario, i dati rimarranno nell'archivio dati della sessione per le future richieste per la sessione. Spetta all'implementazione SessionStateStoreProviderBase eliminare i dati della sessione scaduti.

Costruttori

SessionStateStoreProviderBase()

Inizializza una nuova istanza della classe SessionStateStoreProviderBase.

Proprietà

Description

Ottiene una breve descrizione di facile comprensione che è possibile visualizzare in strumenti di amministrazione o in altre interfacce utente (UI, User Interface).

(Ereditato da ProviderBase)
Name

Ottiene il nome descrittivo utilizzato per fare riferimento al provider durante la configurazione.

(Ereditato da ProviderBase)

Metodi

CreateNewStoreData(HttpContext, Int32)

Crea un nuovo oggetto SessionStateStoreData da utilizzare per la richiesta corrente.

CreateUninitializedItem(HttpContext, String, Int32)

Aggiunge un nuovo elemento di stato sessione all'archivio dati.

Dispose()

Rilascia tutte le risorse utilizzate dall'implementazione dell'oggetto SessionStateStoreProviderBase.

EndRequest(HttpContext)

Chiamato dall'oggetto SessionStateModule al termine di una richiesta.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetItem(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions)

Restituisce dati di sola lettura relativi allo stato sessione dall'archivio dati della sessione.

GetItemExclusive(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions)

Restituisce dati di sola lettura relativi allo stato sessione dall'archivio dati della sessione.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
Initialize(String, NameValueCollection)

Inizializza il generatore di configurazione.

(Ereditato da ProviderBase)
InitializeRequest(HttpContext)

Chiamato dall'oggetto SessionStateModule per l'inizializzazione delle singole richieste.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ReleaseItemExclusive(HttpContext, String, Object)

Rilascia un blocco applicato su un elemento dell'archivio dati della sessione.

RemoveItem(HttpContext, String, Object, SessionStateStoreData)

Elimina dall'archivio dati della sessione i dati relativi agli elementi.

ResetItemTimeout(HttpContext, String)

Aggiorna l'ora e la data di scadenza di un elemento contenuto nell'archivio dati della sessione.

SetAndReleaseItemExclusive(HttpContext, String, SessionStateStoreData, Object, Boolean)

Aggiorna le informazioni relative all'elemento di sessione presente nell'archivio dati dello stato sessione in base ai valori della richiesta corrente e annulla il blocco applicato sui dati.

SetItemExpireCallback(SessionStateItemExpireCallback)

Imposta un riferimento sul delegato SessionStateItemExpireCallback dell'evento Session_OnEnd definito nel file Global.asax.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a

Vedi anche