Partage via


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 requêtes. Vous pouvez stocker une collection de valeurs référencées par un nom de clé ou par un index numérique. L’accès aux valeurs et fonctionnalités de session est disponible à l’aide de la HttpSessionState classe , qui est accessible via la Session propriété du actuel HttpContextou 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 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 cookieless sur true ou UseUri dans l’élément sessionState de votre configuration d’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 pour 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 pour l’attribut cookieless . Si les cookies sont pris en charge quand 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 sera stocké dans l’URL.

Les sessions sont démarrées lors de la première demande 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 la Timeout propriété. 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, comme 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 dans 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 votre configuration d’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 ASP.NET (voir l’espace System.Web.Profile de noms), qui conserve les valeurs utilisateur dans une banque de données sans les expirer à l’aide d’un délai d’expiration System.Web.UI.WebControls; ASP.NET , qui conservent les valeurs de contrôle dans ViewState; Cookies; la QueryString propriété ; et les champs d’un formulaire HTML disponibles à partir d’un 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 relatives à la gestion de l’état.

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