Condividi tramite


SessionStateStoreProviderBase Classe

Definizione

Definisce i membri necessari di un provider di 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 dell'archivio stati sessione. Un provider dell'archivio stato 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 stato sessione viene chiamato dalla SessionStateModule classe durante l'elaborazione di una pagina ASP.NET per comunicare con l'archivio dati per l'archiviazione e il recupero delle variabili di sessione e le informazioni correlate sulla sessione, ad esempio il valore di timeout.

I dati della 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 sulla 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 simultaneamente 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 un comportamento imprevisto dello stato sessione, le SessionStateModule classi e SessionStateStoreProviderBase includono funzionalità di blocco che bloccano esclusivamente l'elemento dell'archivio sessioni per una determinata sessione per la durata dell'esecuzione di una pagina 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 di liberare i dati bloccati.

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 non viene rilasciato il blocco 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 di sessioni bloccati potrebbero essere stati liberati da una chiamata al ReleaseItemExclusive metodo su un thread separato prima della SetAndReleaseItemExclusive chiamata al metodo per la risposta corrente, è possibile eseguire un tentativo di impostare e rilasciare i dati dell'archivio dello stato 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 determinata sessione, 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 eseguire future richieste per la sessione. Spetta all'implementazione SessionStateStoreProviderBase eliminare i dati di sessione scaduti.

Costruttori

Nome Descrizione
SessionStateStoreProviderBase()

Inizializza una nuova istanza della classe SessionStateStoreProviderBase.

Proprietà

Nome Descrizione
Description

Ottiene una breve descrizione descrittiva adatta per la visualizzazione negli strumenti di amministrazione o in altre interfacce utente.

(Ereditato da ProviderBase)
Name

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

(Ereditato da ProviderBase)

Metodi

Nome Descrizione
CreateNewStoreData(HttpContext, Int32)

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

CreateUninitializedItem(HttpContext, String, Int32)

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

Dispose()

Rilascia tutte le risorse usate dall'implementazione SessionStateStoreProviderBase .

EndRequest(HttpContext)

Chiamato dall'oggetto SessionStateModule alla fine 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 stato sessione di sola lettura dall'archivio dati della sessione.

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

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

GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
Initialize(String, NameValueCollection)

Inizializza il generatore di configurazione.

(Ereditato da ProviderBase)
InitializeRequest(HttpContext)

Chiamato dall'oggetto per l'inizializzazione SessionStateModule per richiesta.

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

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

Rilascia un blocco su un elemento nell'archivio dati della sessione.

RemoveItem(HttpContext, String, Object, SessionStateStoreData)

Elimina i dati degli elementi dall'archivio dati della sessione.

ResetItemTimeout(HttpContext, String)

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

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

Aggiorna le informazioni sull'elemento di sessione nell'archivio dati dello stato sessione con i valori della richiesta corrente e cancella il blocco sui dati.

SetItemExpireCallback(SessionStateItemExpireCallback)

Imposta un riferimento al SessionStateItemExpireCallback delegato per l'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