Session, également connu sous le nom d'état de session, est l'état le plus couramment utilisé dans les systèmes Web et est utilisé pour conserver certaines informations liées à l'instance actuelle du navigateur. Nous utilisons souvent Session pour stocker le statut de l'utilisateur lors du contrôle des autorisations utilisateur. Cet article parlera de la méthode de stockage de Session, de la façon de configurer la Session dans web.config, du cycle de vie de la Session, etc.
1. Méthode de stockage de session.
La session est en fait divisée en session côté client et session côté serveur.
Lorsqu'un utilisateur établit une connexion avec le serveur Web pour la première fois, le serveur distribuera un SessionID à l'utilisateur comme identification. SessionID est une chaîne aléatoire de 24 caractères. Chaque fois que l'utilisateur soumet une page, le navigateur inclut le SessionID dans l'en-tête HTTP et le soumet au serveur Web, afin que le serveur Web puisse distinguer quel client demande actuellement la page. Ce SessionID est enregistré sur le client et appartient à la session client.
En fait, la Session client est stockée sous forme de cookie par défaut, donc lorsque l'utilisateur désactive les cookies, le serveur n'obtiendra pas le SessionID. À ce stade, nous pouvons utiliser la méthode url pour stocker la session client. C'est-à-dire que le SessionID est écrit directement dans l'url. Bien entendu, cette méthode n'est pas couramment utilisée.
La plupart des sessions que nous mentionnons font référence à des sessions côté serveur. Il dispose de trois méthodes de stockage (le stockage personnalisé ne sera pas abordé ici) :
1.1 Enregistré dans le processus IIS :
L'enregistrement dans le processus IIS fait référence à l'enregistrement de la session. Les données sont enregistrées dans le processus en cours d'IIS, c'est-à-dire le processus inetinfo.exe. Il s'agit également de la méthode de stockage de session par défaut et la plus couramment utilisée.
Les avantages de cette méthode sont la simplicité et les performances les plus élevées. Mais la session est perdue lors du redémarrage du serveur IIS.
1.2. Enregistrer sur StateServer
Ce mode de stockage fait référence au stockage des données de session dans un processus appelé Asp.Net State Service, le processus est indépendant du processus de travail Asp.Net ou d'un processus distinct du pool d'applications IIS. L'utilisation de ce mode garantit que l'état de session est préservé lorsque l'application Web est redémarrée et rend l'état de session disponible pour plusieurs serveurs Web du réseau.
1.3. Enregistrer dans la base de données SQL Server
Vous pouvez configurer les données de session à stocker dans la base de données SQL Server afin d'effectuer. Pour une telle configuration, les programmeurs doivent d'abord préparer le serveur de données SQL Server, puis exécuter l'outil d'installation intégré .NET pour installer la base de données d'état.
Cette méthode existera toujours après le blocage et le redémarrage du serveur, car elle est stockée en mémoire et sur le disque.
Ce qui suit est une comparaison de ces trois méthodes :
|
StateServer | SQLServer | |||||||||||||||||||||||||||||||||||||
Stockage Emplacement physique | Processus IIS (mémoire) | Processus du service Windows (mémoire) | Base de données SQLServer (disque) | Restrictions de type de stockage | Aucune restriction | Types sérialisables | Types sérialisables Type | ||||||||||||||||||||||||||||||||
Limite de taille de stockage | Illimité | ||||||||||||||||||||||||||||||||||||||
Champ d'utilisationContexte de requête actuel, indépendant pour chaque utilisateur | |||||||||||||||||||||||||||||||||||||||
Cycle de vie | Quand vous visitez le site Web pour la première fois, la session créée sera détruite après le délai d'attente |
||||||||||||||||||||||||||||||||||||||
Avantages | Hautes performances | La session ne repose pas sur le serveur Web et n'est pas facile à perdre | |||||||||||||||||||||||||||||||||||||
Inconvénients | Facilement perdu | La sérialisation et la désérialisation consomment des ressources CPU | La sérialisation et la désérialisation consomment des ressources CPU et la lecture de la session à partir du disque est lente | ||||||||||||||||||||||||||||||||||||
Principes d'utilisation | Ne pas stocker grandes quantités Données |
2. Configurer la session dans web.config
Informations de configuration de session dans le fichier Web.config :
<sessionState mode= cookieless= timeout= stateConnectionString= sqlConnectionString= stateNetworkTimeout= />
Le mode définit où stocker les informations de session :
— Off est défini pour ne pas utiliser la fonction Session
— InProc est configuré pour stocker la session dans le processus ; À l'intérieur se trouve la méthode de stockage dans ASP, qui est la valeur par défaut ;
—— StateServer est configuré pour stocker la session dans un service d'état indépendant
—— SQLServer est configuré pour stocker la session ; dans SQL Server.
Sans cookies Définissez où les informations de session du client sont stockées :
— ture Utilisez le mode sans cookies, les informations de session du client ne sont plus stockées à l'aide de cookies, mais stockez-les via URL. Par exemple, l'URL est http://www.php.cn/(ulqsek45heu3ic2a5zgdl245)/default.aspx
— false Utilisez le mode Cookie, qui est la valeur par défaut.
Timeout définit le nombre de minutes après lequel le serveur abandonne automatiquement les informations de session. La valeur par défaut est de 20 minutes.
StateConnectionString définit le nom du serveur et le numéro de port utilisés lors du stockage des informations de session dans le service d'état, par exemple : "tcpip=127.0.0.1:42424". Cet attribut est obligatoire lorsque la valeur de mode est StateServer. (42424 est le port par défaut).
sqlConnectionString Définit la chaîne de connexion lors de la connexion à SQL Server. Par exemple « data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind ». Cet attribut est obligatoire lorsque la valeur de mode est SQLServer.
StateNetworkTimeout définit le nombre de secondes d'inactivité après lequel la connexion TCP/IP entre le serveur Web et le serveur qui stocke les informations d'état est déconnectée après avoir utilisé le mode StateServer pour stocker l'état de session . La valeur par défaut est de 10 secondes.
Parlons de la façon d'utiliser StateServer et SqlServer pour stocker la session
2.1 StateServer
La première étape consiste à ouvrir le service de statut. Ouvrez la commande "Panneau de configuration" → "Outils d'administration" → "Services" dans l'ordre, recherchez le service d'état ASP.NET, cliquez avec le bouton droit sur le service et sélectionnez Démarrer.
Si vous décidez officiellement d'utiliser le service d'État pour stocker la session, n'oubliez pas de modifier le service pour qu'il démarre automatiquement (le service peut démarrer tout seul une fois le système d'exploitation démarré). redémarré) pour éviter d'oublier de démarrer le service et de rendre la session du site Web inutilisable. Utilisez
Étape 2, ajoutez : stateNetworkTimeout="20"> adresse du serveur d'état (IP : numéro de port de service) dans le nœud system.web. Puisque nous testons maintenant sur cette machine, définissez ici l'adresse de la machine locale 127.0.0.1. Le port d'écoute par défaut du service d'état est 42422. Bien entendu, vous pouvez également modifier le numéro de port du service de statut en modifiant le registre.
(Méthode de modification du registre pour modifier le numéro de port du service d'état : entrez regedit pendant le fonctionnement pour démarrer l'éditeur de registre - ouvrez à son tour le nœud HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesaspnet_stateParameters, double-cliquez sur l'option Port - sélectionnez la base comme décimal, puis entrez un numéro de port. C'est tout )
2.2 SqlServer
Exécutez un fichier de script appelé InstallSqlState.sql dans SQL Server. Ce fichier de script créera une base de données dans SQL Server spécifiquement pour stocker les informations de session, ainsi qu'un travail de l'Agent SQL Server qui gère la base de données d'informations de session. On peut trouver le fichier dans le chemin suivant :
[lecteur système]winntMicrosoft.NETFramework[version]
Puis ouvrez Query Analyzer, connectez-vous au serveur SQL Server, ouvrez le fichier tout à l'heure et mettre en œuvre. Attendez un moment et la base de données et le travail seront créés. À ce stade, vous pouvez ouvrir Enterprise Manager et constater qu'une nouvelle base de données appelée ASPState a été ajoutée.
Modifiez la valeur du mode en SQLServer. Notez que vous devez également modifier la valeur de sqlConnectionString en même temps. Le format est : sqlConnectionString="data source=localhost; Integrated Security=SSPI;" (C'est via l'authentification intégrée Windows)
3. Cycle de vie de la session
Le cycle de vie de la session a en fait été abordé dans la première section, et il est lié à différentes procédures stockées.
4. Traverser et détruire Session
4.1 Traversée :
System.Collections.IEnumerator SessionEnum = Session.Keys.GetEnumerator(); (SessionEnum.MoveNext()) { Response.Write(Session[SessionEnum.Current.ToString()].ToString() + ); }
4.2 Destruction : Session.Abandon().
Pour plus de tutoriels sur les méthodes de stockage de session et les fichiers de configuration, veuillez faire attention au site Web php chinois !