Cette documentation est archivée et n’est pas conservée.

HttpSessionState, classe

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.

Espace de noms : System.Web.SessionState
Assembly : System.Web (dans system.web.dll)

public sealed class HttpSessionState : ICollection, IEnumerable
public final class HttpSessionState implements ICollection, IEnumerable
public final class HttpSessionState implements ICollection, IEnumerable

ASP.NET assure la gestion des états de session pour vous permettre de stocker des informations associées à une session unique de navigateur pour plusieurs demandes. Vous pouvez stocker une collection de valeurs référencées par nom clé ou par index numérique. L'accès aux valeurs et aux fonctionnalités de la session se fait à l'aide de la classe HttpSessionState, accessible via la propriété Session du HttpContext actuel ou la propriété Session de la 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 expirant au sein du navigateur, mais vous pouvez aussi configurer votre application de façon à stocker l'identificateur de session dans l'URL. Il faut pour cela affecter à l'attribut cookieless la valeur true ou UseUri dans l'élément sessionState de la configuration de votre application. Vous pouvez demander à ASP.NET de déterminer si les cookies sont pris en charge par le navigateur en spécifiant une valeur de UseDeviceProfile pour l'attribut cookieless. Vous pouvez également demander à ASP.NET de déterminer si les cookies sont activés dans le navigateur en spécifiant une valeur de AutoDetect pour l'attribut cookieless. Si les cookies sont pris en charge lorsque UseDeviceProfile est spécifié, ou activés lorsque AutoDetect est spécifié, l'identificateur de session sera stocké dans un cookie ; sinon, il sera stocké dans l'URL.

Les sessions sont lancées lors de la première demande et les valeurs de la session persistent à condition qu'une nouvelle demande soit déposée par le navigateur avant que ne soit écoulé le nombre de minutes spécifié dans la propriété Timeout soit écoulé. Lorsqu'une nouvelle session commence, l'événement Start de la session est déclenché. Vous pouvez utiliser cet événement pour exécuter des tâches supplémentaires au démarrage d'une session, par exemple définir les valeurs par défaut de la session. Lorsqu'une session expire, la méthode Abandon est appelée, ou l'application ASP.NET est arrêtée, et l'événement End de la session est déclenché. Vous pouvez utiliser cet événement pour exécuter les opérations de nettoyage nécessaires. L'événement End ne se déclenche que lorsque le mode de l'état de session est 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à des limites de l'application ASP.NET. Si un navigateur se rend sur une autre application, les informations de session ne sont pas accessibles à cette dernière.

Par défaut, les valeurs de session sont stockées en mémoire sur le serveur Web. Vous pouvez également stocker les 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 au cas où le processus ASP.NET ou IIS ou l'application ASP.NET redémarrerait, afin de rendre ces valeurs accessibles à tous les serveurs d'une batterie de serveurs Web. Ce comportement se configure en affectant à l'attribut mode une valeur SessionStateMode valide 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 sont l'état de l'application (consultez la propriété Application) et le cache ASP.NET (consultez l'espace de noms System.Web.Caching), qui stockent des variables accessibles à tous les utilisateurs d'une application ASP.NET ; le profil ASP.NET (consultez l'espace de noms System.Web.Profile), qui fait persister les valeurs utilisateur dans un magasin de données sans les laisser expirer, grâce à un délai d'expiration ; les System.Web.UI.WebControls ASP.NET, qui font persister des valeurs de contrôle dans le ViewState ; les Cookies ; la propriété QueryString ; et les champs d'un formulaire HTML, disponibles depuis un POST HTTP à l'aide de la collection Form. Pour plus d'informations sur les différences entre l'état de session et les autres solutions de gestion d'état, consultez Recommandations sur la gestion d'état ASP.NET.

RubriqueEmplacement
Comment : lire les valeurs de l'état de sessionGénération d'applications Web ASP.NET dans Visual Studio
Comment : lire les valeurs de l'état de sessionGénération d'applications Web ASP.NET
Comment : échantillonner un fournisseur de magasins d'état de sessionGénération d'applications Web ASP.NET
Comment : lire les valeurs de l'état de sessionGénération d'applications Web ASP.NET dans Visual Studio
Comment : échantillonner un fournisseur de magasins d'état de sessionGénération d'applications Web ASP.NET dans Visual Studio
Comment : enregistrer des valeurs dans l'état de sessionGénération d'applications Web ASP.NET dans Visual Studio
Comment : échantillonner un fournisseur de magasins d'état de sessionGénération d'applications Web ASP.NET dans Visual Studio
Comment : enregistrer des valeurs dans l'état de sessionGénération d'applications Web ASP.NET dans Visual Studio
Comment : enregistrer des valeurs dans l'état de sessionGénération d'applications Web ASP.NET

L'exemple de code suivant définit et récupère des valeurs depuis l'état de session.

<%@ 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; charset=utf-8" />
  <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>

  • AspNetHostingPermission  Pour utiliser la classe HttpSessionState dans un environnement hébergé. Valeur de la demande : LinkDemand. Valeur d'autorisation : Minimal.

System.Object
  System.Web.SessionState.HttpSessionState

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0, 1.1, 1.0
Afficher: