SessionStateStoreProviderBase Classe

Definizione

Definisce i membri necessari di un provider dello stato sessione per un archivio dati.Defines the required members of a session-state provider for a data store.

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 di un provider di archiviazione dello stato sessione, vedere implementazione di un provider di archiviazione dello stato sessione.For an example of a session-state store provider implementation, see Implementing a Session-State Store Provider.

Nell'esempio di codice seguente viene illustrato il file di Web.config per un'applicazione ASP.NET configurata per l'utilizzo di un provider di archiviazione dello stato sessione personalizzato.The following code example shows the Web.config file for an ASP.NET application that is configured to use a custom session-state store provider.

<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

Lo stato della sessione ASP.NET legge e scrive i dati della sessione da e in un archivio dati usando un provider di archiviazione dello stato sessione.ASP.NET session state reads and writes session data from and to a data store using a session-state store provider. Un provider dell'archivio dello stato sessione è una classe che eredita la SessionStateStoreProviderBase classe astratta ed esegue l'override dei relativi membri con implementazioni specifiche dell'archivio dati.A session-state store provider is a class that inherits the SessionStateStoreProviderBase abstract class and overrides its members with implementations specific to the data store. Il provider dell'archivio dello 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 di variabili di sessione e informazioni di sessione correlate, ad esempio il valore di timeout.The session-state store provider is called by the SessionStateModule class during the processing of an ASP.NET page to communicate with the data store for the storage and retrieval of session variables and related session information such as the time-out value.

I dati della sessione all'interno di ogni applicazione ASP.NET vengono archiviati separatamente per ogni SessionID Proprietà.Session data within each ASP.NET application is stored separately for each SessionID property. Le applicazioni ASP.NET non condividono i dati della sessione.ASP.NET applications do not share session data.

È possibile specificare un' SessionStateStoreProviderBase implementazione personalizzata per un'applicazione ASP.NET impostando l' mode attributo dell' sessionState elemento di configurazione su Custom e l' customProvider attributo sul nome del provider personalizzato, come illustrato nell'esempio di questo argomento.You can specify a custom SessionStateStoreProviderBase implementation for an ASP.NET application by setting the mode attribute of the sessionState configuration element to Custom and the customProvider attribute to the name of the custom provider, as shown in the example for this topic.

Blocco dei dati dell'archivio sessioniLocking Session Store Data

Poiché le applicazioni ASP.NET sono multithread per supportare la risposta alle richieste simultanee, è possibile che le richieste simultanee possano tentare di accedere alle stesse informazioni di sessione.Because ASP.NET applications are multithreaded to support responding to concurrent requests, it is possible that concurrent requests might attempt to access the same session information. Si consideri uno scenario in cui più frame di un frame accedono alla stessa applicazione.Consider a scenario where multiple frames in a frameset all access the same application. Le richieste separate per ogni fotogramma nel frame possono essere eseguite contemporaneamente su thread diversi nel server Web.The separate requests for each frame in the frameset can be executed on the Web server concurrently on different threads. Se le pagine ASP.NET per ogni variabile di stato sessione di accesso all'origine frame, è possibile avere più thread che accedono contemporaneamente all'archivio sessioni.If the ASP.NET pages for each frame source access session-state variables, then you could have multiple threads accessing the session store concurrently.

Per evitare conflitti di dati nell'archivio sessioni e un comportamento imprevisto dello stato sessione, SessionStateModule le SessionStateStoreProviderBase classi e includono la funzionalità di blocco che blocca in modo esclusivo l'elemento dell'archivio di sessione per una determinata sessione per la durata dell'esecuzione di una pagina ASP.NET.To avoid data collisions at the session store and unexpected session-state behavior, the SessionStateModule and SessionStateStoreProviderBase classes include lock functionality that exclusively locks the session store item for a particular session for the duration of the execution of an ASP.NET page. Si noti che anche se l' EnableSessionState attributo è contrassegnato come ReadOnly , altre pagine ASP.NET nella stessa applicazione potrebbero essere in grado di scrivere nell'archivio di sessioni, quindi una richiesta di dati di sessione di sola lettura dall'archivio potrebbe continuare a rimanere in attesa di liberare i dati bloccati.Note that even if the EnableSessionState attribute is marked as ReadOnly, other ASP.NET pages in the same application might be able to write to the session store, so a request for read-only session data from the store might still end up waiting for locked data to be freed.

Un blocco viene impostato sui dati dell'archivio di sessione all'inizio della richiesta, nella chiamata al GetItemExclusive metodo.A lock is set on session-store data at the beginning of the request, in the call to the GetItemExclusive method. Quando la richiesta viene completata, il blocco viene rilasciato durante la chiamata al SetAndReleaseItemExclusive metodo.When the request completes, the lock is released during the call to the SetAndReleaseItemExclusive method.

Se l' SessionStateModule oggetto rileva i dati della sessione bloccati durante la chiamata al metodo o, i dati della sessione GetItemExclusive GetItem vengono ririchiesti a intervalli di mezz'secondo fino a quando il blocco non viene rilasciato o il tempo di blocco dei dati della sessione supera il valore della ExecutionTimeout Proprietà.If the SessionStateModule object encounters locked session data during the call to either the GetItemExclusive or the GetItem method, it will re-request the session data at half-second intervals until either the lock is released or the amount of time that the session data has been locked exceeds the value of the ExecutionTimeout property. Se viene superato il timeout di esecuzione, l' SessionStateModule oggetto chiamerà il ReleaseItemExclusive metodo per liberare i dati dell'archivio della sessione e richiedere i dati dell'archivio di sessione in quel momento.If the execution time out is exceeded, the SessionStateModule object will call the ReleaseItemExclusive method to free the session-store data and request the session-store data at that time.

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 dello stato sessione che sono già stati rilasciati e modificati da un'altra sessione.Because locked session-store data might have been freed by a call to the ReleaseItemExclusive method on a separate thread before the call to the SetAndReleaseItemExclusive method for the current response, an attempt could be made to set and release session-state store data that has already been released and modified by another session. Per evitare questa situazione, i GetItem GetItemExclusive metodi e restituiscono un identificatore di blocco.To avoid this situation, the GetItem and GetItemExclusive methods return a lock identifier. Questo identificatore di blocco deve essere incluso in ogni richiesta per modificare i dati bloccati dell'archivio sessioni.This lock identifier must be included with each request to modify locked session-store data. I dati dell'archivio di sessione vengono modificati solo se l'identificatore di blocco nell'archivio dati corrisponde all'identificatore di blocco fornito da SessionStateModule .Session-store data is modified only if the lock identifier in the data store matches the lock identifier supplied by the SessionStateModule.

Eliminazione dei dati dell'archivio sessioni scadutoDeleting Expired Session Store Data

Quando il Abandon metodo viene chiamato per una determinata sessione, i dati per tale sessione vengono eliminati dall'archivio dati utilizzando il RemoveItem metodo; in caso contrario, i dati rimarranno nell'archivio dati della sessione per il server richieste future per la sessione.When the Abandon method is called for a particular session, the data for that session is deleted from the data store using the RemoveItem method; otherwise, the data will remain in the session data store to server future requests for the session. SessionStateStoreProviderBasePer eliminare i dati di sessione scaduti, spetta all'implementazione.It is up to the SessionStateStoreProviderBase implementation to delete expired session data.

Costruttori

SessionStateStoreProviderBase()

Inizializza una nuova istanza della classe SessionStateStoreProviderBase.Initializes a new instance of the SessionStateStoreProviderBase class.

Proprietà

Description

Ottiene una breve descrizione di facile comprensione che è possibile visualizzare in strumenti di amministrazione o in altre interfacce utente (UI, User Interface).Gets a brief, friendly description suitable for display in administrative tools or other user interfaces (UIs).

(Ereditato da ProviderBase)
Name

Ottiene il nome descrittivo utilizzato per fare riferimento al provider durante la configurazione.Gets the friendly name used to refer to the provider during configuration.

(Ereditato da ProviderBase)

Metodi

CreateNewStoreData(HttpContext, Int32)

Crea un nuovo oggetto SessionStateStoreData da utilizzare per la richiesta corrente.Creates a new SessionStateStoreData object to be used for the current request.

CreateUninitializedItem(HttpContext, String, Int32)

Aggiunge un nuovo elemento di stato sessione all'archivio dati.Adds a new session-state item to the data store.

Dispose()

Rilascia tutte le risorse utilizzate dall'implementazione dell'oggetto SessionStateStoreProviderBase.Releases all resources used by the SessionStateStoreProviderBase implementation.

EndRequest(HttpContext)

Chiamato dall'oggetto SessionStateModule al termine di una richiesta.Called by the SessionStateModule object at the end of a request.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

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

Restituisce dati di sola lettura relativi allo stato sessione dall'archivio dati della sessione.Returns read-only session-state data from the session data store.

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

Restituisce dati di sola lettura relativi allo stato sessione dall'archivio dati della sessione.Returns read-only session-state data from the session data store.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
Initialize(String, NameValueCollection)

Inizializza il generatore di configurazione.Initializes the configuration builder.

(Ereditato da ProviderBase)
InitializeRequest(HttpContext)

Chiamato dall'oggetto SessionStateModule per l'inizializzazione delle singole richieste.Called by the SessionStateModule object for per-request initialization.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

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

Rilascia un blocco applicato su un elemento dell'archivio dati della sessione.Releases a lock on an item in the session data store.

RemoveItem(HttpContext, String, Object, SessionStateStoreData)

Elimina dall'archivio dati della sessione i dati relativi agli elementi.Deletes item data from the session data store.

ResetItemTimeout(HttpContext, String)

Aggiorna l'ora e la data di scadenza di un elemento contenuto nell'archivio dati della sessione.Updates the expiration date and time of an item in the session data store.

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.Updates the session-item information in the session-state data store with values from the current request, and clears the lock on the data.

SetItemExpireCallback(SessionStateItemExpireCallback)

Imposta un riferimento sul delegato SessionStateItemExpireCallback dell'evento Session_OnEnd definito nel file Global.asax.Sets a reference to the SessionStateItemExpireCallback delegate for the Session_OnEnd event defined in the Global.asax file.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)

Si applica a

Vedi anche