HttpSessionState 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.
Fournit l’accès aux valeurs d’état de session, ainsi qu’aux paramètres au niveau de la session et aux méthodes de gestion de la durée de vie.
public ref class HttpSessionState sealed : System::Collections::ICollection
public sealed class HttpSessionState : System.Collections.ICollection
type HttpSessionState = class
interface ICollection
interface IEnumerable
Public NotInheritable Class HttpSessionState
Implements ICollection
- Héritage
-
HttpSessionState
- Implémente
Exemples
L’exemple de code suivant définit et récupère des valeurs à partir de l’état de session.
Important
Cet exemple contient une zone de texte qui accepte l’entrée utilisateur, qui est une menace de sécurité potentielle. Par défaut, ASP.NET pages web valident que l’entrée utilisateur n’inclut pas de script ou d’éléments HTML. Pour plus d’informations, consultez Vue d’ensemble des exploits de script.
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Collections" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
public void Page_Load(object sender, EventArgs args)
{
if (!IsPostBack)
{
if (Session["address"] == null)
{
enterUserInfoPanel.Visible = true;
userInfoPanel.Visible = false;
}
else
{
enterUserInfoPanel.Visible = false;
userInfoPanel.Visible = true;
SetLabels();
}
}
}
protected void SetLabels()
{
firstNameLabel.Text = Session["firstName"].ToString();
lastNameLabel.Text = Session["lastName"].ToString();
addressLabel.Text = Session["address"].ToString();
cityLabel.Text = Session["city"].ToString();
stateOrProvinceLabel.Text = Session["stateOrProvince"].ToString();
zipCodeLabel.Text = Session["zipCode"].ToString();
countryLabel.Text = Session["country"].ToString();
}
protected void EnterInfoButton_OnClick(object sender, EventArgs e)
{
Session["firstName"] = Server.HtmlEncode(firstNameTextBox.Text);
Session["lastName"] = Server.HtmlEncode(lastNameTextBox.Text);
Session["address"] = Server.HtmlEncode(addressTextBox.Text);
Session["city"] = Server.HtmlEncode(cityTextBox.Text);
Session["stateOrProvince"] = Server.HtmlEncode(stateOrProvinceTextBox.Text);
Session["zipCode"] = Server.HtmlEncode(zipCodeTextBox.Text);
Session["country"] = Server.HtmlEncode(countryTextBox.Text);
enterUserInfoPanel.Visible = false;
userInfoPanel.Visible = true;
SetLabels();
}
protected void ChangeInfoButton_OnClick(object sender, EventArgs args)
{
enterUserInfoPanel.Visible = true;
userInfoPanel.Visible = true;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<meta http-equiv="Content-Type" content="text/html" />
<title>User Information</title>
</head>
<body>
<form id="form1" runat="server">
<h3>
User information</h3>
<asp:Label ID="Msg" ForeColor="maroon" runat="server" /><br />
<asp:Panel ID="enterUserInfoPanel" runat="server">
<table cellpadding="3" border="0">
<tr>
<td>
First name:</td>
<td>
<asp:TextBox ID="firstNameTextBox" runat="server" /></td>
</tr>
<tr>
<td>
Last name:</td>
<td>
<asp:TextBox ID="lastNameTextBox" runat="server" /></td>
</tr>
<tr>
<td>
Address:</td>
<td>
<asp:TextBox ID="addressTextBox" runat="server" /></td>
</tr>
<tr>
<td>
City:</td>
<td>
<asp:TextBox ID="cityTextBox" runat="server" /></td>
</tr>
<tr>
<td>
State or Province:</td>
<td>
<asp:TextBox ID="stateOrProvinceTextBox" runat="server" /></td>
</tr>
<tr>
<td>
Zip Code/Postal Code:</td>
<td>
<asp:TextBox ID="zipCodeTextBox" runat="server" /></td>
</tr>
<tr>
<td>
Country:</td>
<td>
<asp:TextBox ID="countryTextBox" runat="server" /></td>
</tr>
<tr>
<td>
</td>
<td>
<asp:Button ID="enterInfoButton" runat="server" Text="Enter user information" OnClick="EnterInfoButton_OnClick" /></td>
</tr>
</table>
</asp:Panel>
<asp:Panel ID="userInfoPanel" runat="server">
<table cellpadding="3" border="0">
<tr>
<td>
Name:</td>
<td>
<asp:Label ID="firstNameLabel" runat="server" />
<asp:Label ID="lastNameLabel" runat="server" />
</td>
</tr>
<tr>
<td valign="top">
address:</td>
<td>
<asp:Label ID="addressLabel" runat="server" /><br />
<asp:Label ID="cityLabel" runat="server" />,
<asp:Label ID="stateOrProvinceLabel" runat="server" />
<asp:Label ID="zipCodeLabel" runat="server" /><br />
<asp:Label ID="countryLabel" runat="server" />
</td>
</tr>
<tr>
<td>
</td>
<td>
<asp:Button ID="changeInfoButton" runat="server" Text="Change user information" OnClick="ChangeInfoButton_OnClick" /></td>
</tr>
</table>
</asp:Panel>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Collections" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Public Sub Page_Load(ByVal sender As Object, ByVal args As EventArgs)
If Not IsPostBack Then
If Session("Address") Is Nothing Then
EnterUserInfoPanel.Visible = True
UserInfoPanel.Visible = False
Else
EnterUserInfoPanel.Visible = False
UserInfoPanel.Visible = True
SetLabels()
End If
End If
End Sub
Protected Sub SetLabels()
FirstNameLabel.Text = Session("FirstName").ToString()
LastNameLabel.Text = Session("LastName").ToString()
AddressLabel.Text = Session("Address").ToString()
CityLabel.Text = Session("City").ToString()
StateOrProvinceLabel.Text = Session("StateOrProvince").ToString()
ZipCodeLabel.Text = Session("ZipCode").ToString()
CountryLabel.Text = Session("Country").ToString()
End Sub
Protected Sub EnterInfoButton_OnClick(ByVal sender As Object, ByVal args As EventArgs)
Session("FirstName") = Server.HtmlEncode(FirstNameTextBox.Text)
Session("LastName") = Server.HtmlEncode(LastNameTextBox.Text)
Session("Address") = Server.HtmlEncode(AddressTextBox.Text)
Session("City") = Server.HtmlEncode(CityTextBox.Text)
Session("StateOrProvince") = Server.HtmlEncode(StateOrProvinceTextBox.Text)
Session("ZipCode") = Server.HtmlEncode(ZipCodeTextBox.Text)
Session("Country") = Server.HtmlEncode(CountryTextBox.Text)
EnterUserInfoPanel.Visible = False
UserInfoPanel.Visible = True
SetLabels()
End Sub
Protected Sub ChangeInfoButton_OnClick(ByVal sender As Object, ByVal args As EventArgs)
EnterUserInfoPanel.Visible = True
UserInfoPanel.Visible = False
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<meta http-equiv="Content-Type" content="text/html" />
<title>User Information</title>
</head>
<body>
<form id="form1" runat="server">
<h3>
User information</h3>
<asp:Label ID="Msg" ForeColor="maroon" runat="server" /><br />
<asp:Panel ID="EnterUserInfoPanel" runat="server">
<table cellpadding="3" border="0">
<tr>
<td>
First name:</td>
<td>
<asp:TextBox ID="FirstNameTextBox" runat="server" /></td>
</tr>
<tr>
<td>
Last name:</td>
<td>
<asp:TextBox ID="LastNameTextBox" runat="server" /></td>
</tr>
<tr>
<td>
Address:</td>
<td>
<asp:TextBox ID="AddressTextBox" runat="server" /></td>
</tr>
<tr>
<td>
City:</td>
<td>
<asp:TextBox ID="CityTextBox" runat="server" /></td>
</tr>
<tr>
<td>
State or Province:</td>
<td>
<asp:TextBox ID="StateOrProvinceTextBox" runat="server" /></td>
</tr>
<tr>
<td>
Zip Code/Postal Code:</td>
<td>
<asp:TextBox ID="ZipCodeTextBox" runat="server" /></td>
</tr>
<tr>
<td>
Country:</td>
<td>
<asp:TextBox ID="CountryTextBox" runat="server" /></td>
</tr>
<tr>
<td>
</td>
<td>
<asp:Button ID="EnterInfoButton" runat="server" Text="Enter user information" OnClick="EnterInfoButton_OnClick" /></td>
</tr>
</table>
</asp:Panel>
<asp:Panel ID="UserInfoPanel" runat="server">
<table cellpadding="3" border="0">
<tr>
<td>
Name:</td>
<td>
<asp:Label ID="FirstNameLabel" runat="server" />
<asp:Label ID="LastNameLabel" runat="server" />
</td>
</tr>
<tr>
<td valign="top">
Address:</td>
<td>
<asp:Label ID="AddressLabel" runat="server" /><br />
<asp:Label ID="CityLabel" runat="server" />,
<asp:Label ID="StateOrProvinceLabel" runat="server" />
<asp:Label ID="ZipCodeLabel" runat="server" /><br />
<asp:Label ID="CountryLabel" runat="server" />
</td>
</tr>
<tr>
<td>
</td>
<td>
<asp:Button ID="ChangeInfoButton" runat="server" Text="Change user information" OnClick="ChangeInfoButton_OnClick" /></td>
</tr>
</table>
</asp:Panel>
</form>
</body>
</html>
Remarques
ASP.NET fournit la gestion de l’état de session pour vous permettre de stocker des informations associées à une session de navigateur unique sur plusieurs requêtes. Vous pouvez stocker une collection de valeurs référencées par un nom de clé ou par index numérique. L’accès aux valeurs et fonctionnalités de session est disponible à l’aide de la HttpSessionState classe, accessible par le biais de la Session propriété actuelle HttpContextou de la Session propriété du Page.
Les données de session sont associées à une session de navigateur spécifique à l’aide d’un identificateur unique. Par défaut, cet identificateur est stocké dans un cookie de session non expiré dans le navigateur, mais vous pouvez également configurer votre application pour stocker l’identificateur de session dans l’URL en définissant l’attribut cookieless sur true ou UseUri dans l’élément sessionState de la configuration de votre application. Vous pouvez avoir ASP.NET déterminer si les cookies sont pris en charge par le navigateur en spécifiant une valeur de UseDeviceProfile l’attribut cookieless . Vous pouvez également avoir ASP.NET déterminer si les cookies sont activés pour le navigateur en spécifiant une valeur de AutoDetect l’attribut cookieless . Si les cookies sont pris en charge lorsqu’ils UseDeviceProfile sont spécifiés ou activés lorsqu’ils AutoDetect sont spécifiés, l’identificateur de session est stocké dans un cookie ; sinon, l’identificateur de session est stocké dans l’URL.
Les sessions sont démarrées pendant la première requête et les valeurs de session sont conservées tant qu’une nouvelle requête est effectuée par le navigateur avant le nombre de minutes spécifiées dans le passage de propriété Timeout . Lorsqu’une nouvelle session commence, l’événement de session Start est déclenché. Vous pouvez utiliser cet événement pour effectuer tout travail supplémentaire au début d’une session, par exemple définir des valeurs de session par défaut. Lorsqu’une session expire, la Abandon méthode est appelée ou l’application ASP.NET est arrêtée, l’événement de session End est déclenché. Vous pouvez utiliser cet événement pour effectuer tout nettoyage nécessaire. L’événement End est déclenché uniquement lorsque l’état mode de session est défini sur InProc.
Pour améliorer les performances, les sessions qui utilisent des cookies n’allouent pas de stockage de session tant que les données ne sont pas réellement stockées dans l’objet Session . Pour plus d’informations, consultez la propriété SessionID.
L’état de session n’est pas conservé au-delà des limites de l’application ASP.NET. Si un navigateur accède à une autre application, les informations de session ne sont pas disponibles pour la nouvelle application.
Les valeurs de session sont stockées en mémoire sur le serveur Web, par défaut. Vous pouvez également stocker des valeurs de session dans une base de données SQL Server, un serveur d’état ASP.NET ou un serveur personnalisé. Cela vous permet de conserver les valeurs de session dans les cas où le processus ASP.NET ou IIS ou l’application ASP.NET redémarre et de rendre les valeurs de session disponibles sur tous les serveurs d’une batterie de serveurs Web. Ce comportement est configuré en définissant l’attribut mode sur une valeur valide SessionStateMode dans l’élément sessionState de votre configuration d’application. Pour plus d’informations, consultez Session-State Modes.
Les alternatives à l’état de session incluent l’état de l’application (voir la Application propriété) et le cache ASP.NET (voir l’espace System.Web.Caching de noms), qui stockent les variables accessibles par tous les utilisateurs d’une application ASP.NET ; le profil ASP.NET (voir l’espace System.Web.Profile de noms), qui conserve les valeurs utilisateur dans un magasin de données sans les expirer à l’aide d’un délai d’attente ; ASP.NET System.Web.UI.WebControls, qui conservent les valeurs de contrôle dans le ViewState; ; Cookiesla QueryString propriété ; et les champs d’un formulaire HTML qui sont disponibles à partir d’un formulaire HTTP POST à l’aide de la Form collection. Pour plus d’informations sur les différences entre l’état de session et d’autres alternatives de gestion d’état, consultez ASP.NET recommandations de gestion d’état.
Propriétés
| Nom | Description |
|---|---|
| CodePage |
Obtient ou définit l’identificateur de jeu de caractères pour la session active. |
| Contents |
Obtient une référence à l’objet d’état de session actuel. |
| CookieMode |
Obtient une valeur qui indique si l’application est configurée pour les sessions sans cookie. |
| Count |
Obtient le nombre d’éléments dans la collection d’états de session. |
| IsCookieless |
Obtient une valeur indiquant si l’ID de session est incorporé dans l’URL ou stocké dans un cookie HTTP. |
| IsNewSession |
Obtient une valeur indiquant si la session a été créée avec la requête actuelle. |
| IsReadOnly |
Obtient une valeur indiquant si la session est en lecture seule. |
| IsSynchronized |
Obtient une valeur indiquant si l’accès à la collection de valeurs d’état de session est synchronisé (thread safe). |
| Item[Int32] |
Obtient ou définit une valeur de session par index numérique. |
| Item[String] |
Obtient ou définit une valeur de session par nom. |
| Keys |
Obtient une collection de clés pour toutes les valeurs stockées dans la collection d’états de session. |
| LCID |
Obtient ou définit l’identificateur de paramètres régionaux (LCID) de la session active. |
| Mode |
Obtient le mode d’état de session actuel. |
| SessionID |
Obtient l’identificateur unique de la session. |
| StaticObjects |
Obtient une collection d’objets déclarés par |
| SyncRoot |
Obtient un objet qui peut être utilisé pour synchroniser l’accès à la collection de valeurs d’état de session. |
| Timeout |
Obtient ou définit la durée, en minutes, autorisée entre les demandes avant que le fournisseur d’état de session termine la session. |
Méthodes
| Nom | Description |
|---|---|
| Abandon() |
Annule la session active. |
| Add(String, Object) |
Ajoute un nouvel élément à la collection d’états de session. |
| Clear() |
Supprime toutes les clés et valeurs de la collection d’états de session. |
| CopyTo(Array, Int32) |
Copie la collection de valeurs d’état de session dans un tableau unidimensionnel, en commençant à l’index spécifié dans le tableau. |
| Equals(Object) |
Détermine si l’objet spécifié est égal à l’objet actuel. (Hérité de Object) |
| GetEnumerator() |
Retourne un énumérateur qui peut être utilisé pour lire tous les noms de variables d’état de session dans la session active. |
| GetHashCode() |
Sert de fonction de hachage par défaut. (Hérité de Object) |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| Remove(String) |
Supprime un élément de la collection d’états de session. |
| RemoveAll() |
Supprime toutes les clés et valeurs de la collection d’états de session. |
| RemoveAt(Int32) |
Supprime un élément à un index spécifié de la collection d’états de session. |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |
Méthodes d’extension
| Nom | Description |
|---|---|
| AsParallel(IEnumerable) |
Active la parallélisation d’une requête. |
| AsQueryable(IEnumerable) |
Convertit un IEnumerable en IQueryable. |
| Cast<TResult>(IEnumerable) |
Convertit les éléments d’un IEnumerable en type spécifié. |
| OfType<TResult>(IEnumerable) |
Filtre les éléments d’une IEnumerable en fonction d’un type spécifié. |