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.Provides access to session-state values as well as session-level settings and lifetime management methods.

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.The following code example sets and retrieves values from session state.

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é.This example has a text box that accepts user input, which is a potential security threat. 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.By default, ASP.NET Web pages validate that user input does not include script or HTML elements. Pour plus d’informations, consultez Vue d’ensemble des attaques de script.For more information, see Script Exploits Overview.

<%@ 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 la gestion des États de session pour vous permettre de stocker les informations associées à une session de navigateur unique sur plusieurs demandes.ASP.NET provides session-state management to enable you to store information associated with a unique browser session across multiple requests. Vous pouvez stocker une collection de valeurs référencées par un nom de clé ou par un index numérique.You can store a collection of values referenced by a key name or by numerical index. L’accès aux valeurs de session et aux fonctionnalités est HttpSessionState disponible à l’aide de la classe Session , qui est accessible HttpContextvia la propriété de l’objet Pageactuel ou la Session propriété de l’objet.Access to session values and functionality is available using the HttpSessionState class, which is accessible through the Session property of the current HttpContext, or the Session property of the Page.

Les données de session sont associées à une session de navigateur spécifique à l’aide d’un identificateur unique.Session data is associated with a specific browser session using a unique identifier. 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 affectant à cookieless true l’attribut la UseUri valeur ou dans la élément sessionState de la configuration de votre application.By default, this identifier is stored in a non-expiring session cookie in the browser, but you can also configure your application to store the session identifier in the URL by setting the cookieless attribute to true or UseUri in the sessionState element of your application configuration. Vous pouvez demander à ASP.net de déterminer si les cookies sont pris en charge par le navigateur UseDeviceProfile en spécifiant la valeur pour l' cookieless attribut.You can have ASP.NET determine whether cookies are supported by the browser by specifying a value of UseDeviceProfile for the cookieless attribute. Vous pouvez également demander à ASP.net de déterminer si les cookies sont activés pour le navigateur en AutoDetect spécifiant cookieless la valeur pour l’attribut.You can also have ASP.NET determine whether cookies are enabled for the browser by specifying a value of AutoDetect for the cookieless attribute. Si les cookies sont pris UseDeviceProfile en charge lorsque est spécifié, AutoDetect ou activé lorsque est spécifié, l’identificateur de session est stocké dans un cookie; dans le cas contraire, l’identificateur de session est stocké dans l’URL.If cookies are supported when UseDeviceProfile is specified, or enabled when AutoDetect is specified, then the session identifier will be stored in a cookie; otherwise the session identifier will be stored in the URL.

Les sessions sont démarrées au cours de la première demande et les valeurs de session sont conservées tant qu’une nouvelle demande est effectuée par le navigateur avant le Timeout nombre de minutes spécifié dans la propriété Pass.Sessions are started during the first request and session values will persist as long as a new request is made by the browser before the number of minutes specified in the Timeout property pass. Lorsqu’une nouvelle session commence, l’événement Start de session est déclenché.When a new session begins, the session Start event is raised. Vous pouvez utiliser cet événement pour effectuer des tâches supplémentaires au début d’une session, telles que la définition des valeurs de session par défaut.You can use this event to perform any additional work at the start of a session, such as setting default session values. Quand une session expire, la Abandon méthode est appelée ou l’application ASP.net est arrêtée, l’événement de End session est déclenché.When a session times out, the Abandon method is called, or the ASP.NET application is shut down, the session End event is raised. Vous pouvez utiliser cet événement pour effectuer tout nettoyage nécessaire.You can use this event to perform any necessary cleanup. L' End événement est déclenché uniquement lorsque l’état mode de InProcsession a la valeur.The End event is raised only when the session state mode is set to InProc.

Pour améliorer les performances, les sessions qui utilisent des cookies n’allouent pas de stockage de session tant Session que les données ne sont pas réellement stockées dans l’objet.To improve performance, sessions that use cookies do not allocate session storage until data is actually stored in the Session object. Pour plus d'informations, consultez la propriété SessionID.For more information, see the SessionID property.

L’état de session n’est pas persistant au-delà des limites de l’application ASP.NET.Session state does not persist across ASP.NET application boundaries. Si un navigateur accède à une autre application, les informations de session ne sont pas disponibles pour la nouvelle application.If a browser navigates to another application, the session information is not available to the new application.

Par défaut, les valeurs de session sont stockées en mémoire sur le serveur Web.Session values are stored in memory on the Web server, by default. 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é.You can also store session values in a SQL Server database, an ASP.NET state server, or a custom server. 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 pour rendre les valeurs de session disponibles sur tous les serveurs d’une batterie de serveurs Web.This enables you to preserve session values in cases where the ASP.NET or IIS process or the ASP.NET application restarts and to make session values available across all the servers in a Web farm. Ce comportement est configuré en affectant mode à l’attribut une SessionStateMode valeur valide dans l’élément sessionState de la configuration de votre application.This behavior is configured by setting the mode attribute to a valid SessionStateMode value in the sessionState element of your application configuration. Pour plus d’informations, consultez modes d’état de session.For more information, see Session-State Modes.

Les alternatives à l’état de session incluent l’état Application de l’application (voir la propriété) et System.Web.Caching le cache ASP.net (consultez l’espace de noms), qui stockent les variables accessibles par tous les utilisateurs d’une application ASP.net; le profil ASP.net (voir System.Web.Profile espace de noms), qui conserve les valeurs utilisateur dans un magasin de données sans les faire expirer à l’aide d’un délai d’attente; ASP.NET System.Web.UI.WebControls, qui conserve les valeurs de contrôle ViewStatedans le; ; la QueryString propriété; et les champs d’un formulaire HTML qui sont disponibles à partir POST d’un Form http à l’aide de la collection. CookiesAlternatives to session state include application state (see the Application property) and the ASP.NET cache (see the System.Web.Caching namespace), which store variables that can be accessed by all users of an ASP.NET application; the ASP.NET profile (see the System.Web.Profile namespace), which persists user values in a data store without expiring them using a time-out; ASP.NET System.Web.UI.WebControls, which persist control values in the ViewState; Cookies; the QueryString property; and fields on an HTML form that are available from an HTTP POST using the Form collection. Pour plus d’informations sur les différences entre l’état de session et d’autres alternatives de gestion de l’État, consultez recommandations en matière de gestion d’état ASP.net.For more details on the differences between session state and other state-management alternatives, see ASP.NET State Management Recommendations.

Propriétés

CodePage

Obtient ou définit l’identificateur de jeu de caractères pour la session active.Gets or sets the character-set identifier for the current session.

Contents

Obtient une référence à l'objet d’état de session actuel.Gets a reference to the current session-state object.

CookieMode

Obtient une valeur qui indique si l’application est configurée pour les sessions sans cookies.Gets a value that indicates whether the application is configured for cookieless sessions.

Count

Obtient le nombre d’éléments dans la collection d’état de session.Gets the number of items in the session-state collection.

IsCookieless

Obtient une valeur indiquant si l'ID de session est incorporé dans l'URL ou stocké dans un cookie HTTP.Gets a value indicating whether the session ID is embedded in the URL or stored in an HTTP cookie.

IsNewSession

Obtient une valeur indiquant si la session a été créée avec la demande en cours.Gets a value indicating whether the session was created with the current request.

IsReadOnly

Obtient une valeur indiquant si la session est en lecture seule.Gets a value indicating whether the session is read-only.

IsSynchronized

Obtient une valeur indiquant si l'accès à la collection de valeurs d'état de session est synchronisé (thread-safe).Gets a value indicating whether access to the collection of session-state values is synchronized (thread safe).

Item[Int32]

Obtient ou définit une valeur de session par index numérique.Gets or sets a session value by numerical index.

Item[String]

Obtient ou définit une valeur de session par nom.Gets or sets a session value by name.

Keys

Obtient une collection des clés de toutes les valeurs stockées dans la collection des états de session.Gets a collection of the keys for all values stored in the session-state collection.

LCID

Obtient ou définit l'identificateur de paramètres régionaux (LCID) de la session en cours.Gets or sets the locale identifier (LCID) of the current session.

Mode

Obtient le mode d'état de session en cours.Gets the current session-state mode.

SessionID

Obtient l'identificateur unique de la session.Gets the unique identifier for the 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.Gets a collection of objects declared by <object Runat="Server" Scope="Session"/> tags within the ASP.NET application file Global.asax.

SyncRoot

Obtient un objet qui peut être utilisé pour synchroniser l'accès à la collection de valeurs relatives aux états de session.Gets an object that can be used to synchronize access to the collection of session-state values.

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.Gets or sets the amount of time, in minutes, allowed between requests before the session-state provider terminates the session.

Méthodes

Abandon()

Annule la session active.Cancels the current session.

Add(String, Object)

Ajoute un nouvel élément à la collection des états de session.Adds a new item to the session-state collection.

Clear()

Supprime toutes les clés et valeurs de la collection des états de session.Removes all keys and values from the session-state collection.

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.Copies the collection of session-state values to a one-dimensional array, starting at the specified index in the array.

Equals(Object)

Détermine si l'objet spécifié est identique à l'objet actuel.Determines whether the specified object is equal to the current object.

(Hérité de Object)
GetEnumerator()

Retourne un énumérateur pouvant servir à lire tous les noms de variables des états de session de la session actuelle.Returns an enumerator that can be used to read all the session-state variable names in the current session.

GetHashCode()

Fait office de fonction de hachage par défaut.Serves as the default hash function.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle de l'objet Object actuel.Creates a shallow copy of the current Object.

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

Supprime un élément de la collection d'états de session.Deletes an item from the session-state collection.

RemoveAll()

Supprime toutes les clés et valeurs de la collection des états de session.Removes all keys and values from the session-state collection.

RemoveAt(Int32)

Supprime de la collection d'états de session un élément situé à un index spécifié.Deletes an item at a specified index from the session-state collection.

ToString()

Retourne une chaîne qui représente l'objet actuel.Returns a string that represents the current object.

(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é.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filtre les éléments d'un IEnumerable en fonction du type spécifié.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Active la parallélisation d'une requête.Enables parallelization of a query.

AsQueryable(IEnumerable)

Convertit un IEnumerable en IQueryable.Converts an IEnumerable to an IQueryable.

S’applique à

Voir aussi