HttpSessionState Classe

Définition

Donne accès aux valeurs relatives à l'état de session, aux paramètres de niveau 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 comprend une zone de texte qui accepte une entrée d'utilisateur, ce qui constitue une menace potentielle pour la sécurité. Par défaut, les pages web ASP.NET vérifient que l’entrée d’utilisateur n’inclut pas de script ou d’éléments HTML. Pour plus d’informations, consultez Vue d’ensemble des attaques 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>
            &nbsp;</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>
            &nbsp;</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>
            &nbsp;</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>
            &nbsp;</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 une gestion de l’état de session pour vous permettre de stocker les informations associées à une session de navigateur unique sur plusieurs demandes. 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 , qui est accessible par le biais de la Session propriété du actuel HttpContextou de la Session propriété de .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 sans expiration dans le navigateur, mais vous pouvez également configurer votre application pour stocker l’identificateur de session dans l’URL en définissant l’attribut cookielesstrue sur 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 la valeur pour UseDeviceProfile l’attribut cookieless . Vous pouvez également avoir ASP.NET déterminer si les cookies sont activés pour le navigateur en spécifiant la valeur pour l’attribut AutoDetectcookieless . Si les cookies sont pris en charge lorsque UseDeviceProfile est spécifié, ou activés quand AutoDetect est spécifié, 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 lors de 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é 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, tel que la définition des valeurs de session par défaut. Lorsqu’une session expire, que la Abandon méthode est appelée ou que 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 ne persiste pas au-delà de ASP.NET limites de l’application. 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 la configuration de votre application. Pour plus d’informations, consultez Modes d’état de session.

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 à tous les utilisateurs d’une application ASP.NET ; le profil de ASP.NET (voir l’espace System.Web.Profile de noms), qui conserve les valeurs utilisateur dans un magasin de données sans les faire expirer à l’aide d’un délai d’expiration ; ASP.NET System.Web.UI.WebControls, qui conservent les valeurs de contrôle dans ViewState; CookiesQueryString la propriété ; et les champs d’un formulaire HTML disponibles à partir d’un POST http à 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 State Management Recommendations.

Propriétés

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 cookies.

Count

Obtient le nombre d’éléments dans la collection d’état 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 demande en cours.

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 des clés de toutes les valeurs stockées dans la collection des é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 des balises <object Runat="Server" Scope="Session"/> dans le fichier Global.asax de l'application ASP.NET.

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 le délai (en minutes) autorisé entre les demandes pour que le fournisseur de l’état de session termine la session.

Méthodes

Abandon()

Annule la session active.

Add(String, Object)

Ajoute un nouvel élément à la collection des états de session.

Clear()

Supprime toutes les clés et valeurs de la collection des é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()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
Remove(String)

Supprime un élément de la collection d’état de session.

RemoveAll()

Supprime toutes les clés et valeurs de la collection des états de session.

RemoveAt(Int32)

Supprime de la collection d'états de session un élément situé à un index spécifié.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

Méthodes d’extension

Cast<TResult>(IEnumerable)

Effectue un cast des éléments d'un IEnumerable vers le type spécifié.

OfType<TResult>(IEnumerable)

Filtre les éléments d'un IEnumerable en fonction du type spécifié.

AsParallel(IEnumerable)

Active la parallélisation d'une requête.

AsQueryable(IEnumerable)

Convertit un IEnumerable en IQueryable.

S’applique à

Voir aussi