SessionStateStoreProviderBase Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Définit les membres d'un fournisseur d'état de session requis pour un magasin de données.
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
- Héritage
Exemples
Pour obtenir un exemple d’implémentation d’un fournisseur de magasin d’état de session, consultez Implémentation d’un fournisseur de magasins d'Session-State.
L’exemple de code suivant montre le fichier Web.config d’une application ASP.NET configurée pour utiliser un fournisseur de magasin d’état de session personnalisé.
<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>
Remarques
ASP.NET l’état de session lit et écrit des données de session à partir de et dans un magasin de données à l’aide d’un fournisseur de magasin d’état de session. Un fournisseur de magasin d’état de session est une classe qui hérite de la SessionStateStoreProviderBase classe abstraite et remplace ses membres par des implémentations spécifiques au magasin de données. Le fournisseur de magasin d’état de session est appelé par la SessionStateModule classe pendant le traitement d’une page de ASP.NET pour communiquer avec le magasin de données pour le stockage et la récupération des variables de session et les informations de session associées, telles que la valeur du délai d’attente.
Les données de session dans chaque application ASP.NET sont stockées séparément pour chaque SessionID propriété. ASP.NET applications ne partagent pas de données de session.
Vous pouvez spécifier une implémentation personnalisée SessionStateStoreProviderBase pour une application ASP.NET en définissant l’attribut mode
de l’élément sessionState
de configuration sur Custom et l’attribut customProvider
sur le nom du fournisseur personnalisé, comme indiqué dans l’exemple de cette rubrique.
Verrouillage des données du magasin de sessions
Étant donné que ASP.NET applications sont multithread pour prendre en charge la réponse aux demandes simultanées, il est possible que les demandes simultanées tentent d’accéder aux mêmes informations de session. Prenons l’exemple d’un scénario dans lequel plusieurs images d’un jeu de cadres accèdent toutes à la même application. Les demandes distinctes pour chaque image du jeu de cadres peuvent être exécutées simultanément sur le serveur Web sur différents threads. Si le ASP.NET pages pour chaque source de trame accède à des variables d’état de session, vous pouvez avoir plusieurs threads qui accèdent simultanément au magasin de sessions.
Pour éviter les collisions de données au niveau du magasin de session et le comportement inattendu de l’état de session, les SessionStateModule classes et SessionStateStoreProviderBase incluent une fonctionnalité de verrouillage qui verrouille exclusivement l’élément du magasin de session pour une session particulière pendant la durée de l’exécution d’une page ASP.NET. Notez que même si l’attribut EnableSessionState est marqué comme ReadOnly
, d’autres pages ASP.NET dans la même application peuvent être en mesure d’écrire dans le magasin de session. Par conséquent, une demande de données de session en lecture seule provenant du magasin peut toujours attendre que les données verrouillées soient libérées.
Un verrou est défini sur les données de magasin de session au début de la demande, dans l’appel à la GetItemExclusive méthode . Une fois la demande terminée, le verrou est libéré pendant l’appel à la SetAndReleaseItemExclusive méthode .
Si l’objet SessionStateModule rencontre des données de session verrouillées pendant l’appel à la GetItemExclusiveGetItem méthode ou , il demande à nouveau les données de session à intervalles d’une demi-seconde jusqu’à ce que le verrou soit libéré ou que la durée pendant laquelle les données de session ont été verrouillées dépasse la valeur de la ExecutionTimeout propriété . Si le délai d’exécution est dépassé, l’objet SessionStateModule appelle la ReleaseItemExclusive méthode pour libérer les données du magasin de session et demander les données du magasin de session à ce moment-là.
Étant donné que les données de magasin de session verrouillées ont peut-être été libérées par un appel à la ReleaseItemExclusive méthode sur un thread distinct avant l’appel à la SetAndReleaseItemExclusive méthode pour la réponse actuelle, il est possible de tenter de définir et de libérer les données du magasin d’état de session qui ont déjà été publiées et modifiées par une autre session. Pour éviter cette situation, les GetItem méthodes et retournent GetItemExclusive un identificateur de verrou. Cet identificateur de verrou doit être inclus avec chaque demande de modification des données de magasin de session verrouillées. Les données du magasin de session sont modifiées uniquement si l’identificateur de verrou dans le magasin de données correspond à l’identificateur de verrou fourni par .SessionStateModule
Suppression des données du magasin de sessions expirées
Lorsque la Abandon méthode est appelée pour une session particulière, les données de cette session sont supprimées du magasin de données à l’aide de la RemoveItem méthode ; sinon, les données restent dans le magasin de données de session pour serveurer les demandes futures pour la session. Il appartient à l’implémentation SessionStateStoreProviderBase de supprimer les données de session expirées.
Constructeurs
SessionStateStoreProviderBase() |
Initialise une nouvelle instance de la classe SessionStateStoreProviderBase. |
Propriétés
Description |
Obtient une description brève et conviviale qui peut s'afficher dans les outils d'administration ou d'autres interfaces utilisateur. (Hérité de ProviderBase) |
Name |
Obtient le nom convivial qui référence le fournisseur au cours de la configuration. (Hérité de ProviderBase) |
Méthodes
CreateNewStoreData(HttpContext, Int32) |
Crée un nouvel objet SessionStateStoreData à utiliser pour la demande actuelle. |
CreateUninitializedItem(HttpContext, String, Int32) |
Ajoute un nouvel élément d'état de session au magasin de données. |
Dispose() |
Libère toutes les ressources utilisées par l'implémentation SessionStateStoreProviderBase. |
EndRequest(HttpContext) |
Appelé par l'objet SessionStateModule à la fin d'une demande. |
Equals(Object) |
Détermine si l'objet spécifié est égal à l'objet actuel. (Hérité de Object) |
GetHashCode() |
Fait office de fonction de hachage par défaut. (Hérité de Object) |
GetItem(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions) |
Retourne des données d'état de session en lecture seule du magasin de données de session. |
GetItemExclusive(HttpContext, String, Boolean, TimeSpan, Object, SessionStateActions) |
Retourne des données d'état de session en lecture seule du magasin de données de session. |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
Initialize(String, NameValueCollection) |
Initialise le générateur de configuration. (Hérité de ProviderBase) |
InitializeRequest(HttpContext) |
Appelé par l'objet SessionStateModule pour une initialisation par demande. |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
ReleaseItemExclusive(HttpContext, String, Object) |
Libère le verrouillage d'un élément du magasin de données de session. |
RemoveItem(HttpContext, String, Object, SessionStateStoreData) |
Supprime des données d'élément du magasin de données de session. |
ResetItemTimeout(HttpContext, String) |
Actualise la date et l'heure d'expiration d'un élément du magasin de données de session. |
SetAndReleaseItemExclusive(HttpContext, String, SessionStateStoreData, Object, Boolean) |
Actualise les informations d'élément de session du magasin de données d'état de session en leur affectant les valeurs de la demande actuelle, et annule le verrouillage des données. |
SetItemExpireCallback(SessionStateItemExpireCallback) |
Définit une référence au délégué SessionStateItemExpireCallback pour l'événement |
ToString() |
Retourne une chaîne qui représente l'objet actuel. (Hérité de Object) |