HttpSessionState HttpSessionState HttpSessionState HttpSessionState Class

Definizione

Fornisce accesso ai valori relativi allo stato sessione, oltre che alle impostazioni a livello di sessione e ai metodi di gestione della durata.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
Ereditarietà
HttpSessionStateHttpSessionStateHttpSessionStateHttpSessionState
Implementazioni

Esempi

Esempio di codice seguente imposta e recupera i valori di stato della sessione.The following code example sets and retrieves values from session state.

Importante

L'esempio include una casella di testo che accetta l'input dell'utente e rappresenta quindi una potenziale minaccia alla sicurezza.This example has a text box that accepts user input, which is a potential security threat. Per impostazione predefinita, le pagine Web ASP.NET verificano che l'input dell'utente non includa script o elementi HTML.By default, ASP.NET Web pages validate that user input does not include script or HTML elements. Per altre informazioni, vedere Cenni preliminari sugli attacchi tramite 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>

Commenti

ASP.NET consente la gestione dello stato della sessione per consentire di archiviare informazioni associate a una sessione del browser univoci tra più richieste.ASP.NET provides session-state management to enable you to store information associated with a unique browser session across multiple requests. È possibile archiviare un insieme di valori di che cui si fa riferimento il nome della chiave o indice numerico.You can store a collection of values referenced by a key name or by numerical index. Accesso alle funzionalità e i valori della sessione è disponibile tramite il HttpSessionState classe, che è accessibile tramite il Session proprietà dell'oggetto corrente HttpContext, o il Session proprietà del Page.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.

I dati della sessione sono associato a una sessione del browser specifico utilizzando un identificatore univoco.Session data is associated with a specific browser session using a unique identifier. Per impostazione predefinita, questo identificatore viene memorizzato in un cookie di sessione permanente nel browser, ma è anche possibile configurare l'applicazione per archiviare l'identificatore di sessione nell'URL, impostando il cookieless dell'attributo true o UseUri nel sessionState elemento di configurazione dell'applicazione.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. È possibile inoltre determinare se i cookie sono supportati dal browser, specificando un valore di ASP.NET UseDeviceProfile per il cookieless attributo.You can have ASP.NET determine whether cookies are supported by the browser by specifying a value of UseDeviceProfile for the cookieless attribute. È anche possibile ASP.NET determinare se i cookie siano abilitati per il browser, specificando un valore di AutoDetect per il cookieless attributo.You can also have ASP.NET determine whether cookies are enabled for the browser by specifying a value of AutoDetect for the cookieless attribute. Se i cookie sono supportati quando UseDeviceProfile è specificato o abilitato quando AutoDetect viene specificato, la sessione identificatore sarà memorizzato in un cookie; in caso contrario, verrà archiviato l'identificatore di sessione nell'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.

Le sessioni vengono avviate durante la prima richiesta e i valori della sessione verranno mantenute fino a quando viene effettuata una nuova richiesta dal browser prima del numero di minuti specificato nella Timeout pass di proprietà.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. Quando viene avviata una nuova sessione, la sessione Start viene generato l'evento.When a new session begins, the session Start event is raised. È possibile usare questo evento per eseguire operazioni aggiuntive all'inizio di una sessione, ad esempio l'impostazione predefinita i valori della sessione.You can use this event to perform any additional work at the start of a session, such as setting default session values. Quando una sessione di timeout, il Abandon viene chiamato il metodo o l'applicazione ASP.NET viene arrestato, la sessione End viene generato l'evento.When a session times out, the Abandon method is called, or the ASP.NET application is shut down, the session End event is raised. È possibile usare questo evento per eseguire le operazioni di pulitura necessarie.You can use this event to perform any necessary cleanup. Il End evento viene generato solo quando lo stato della sessione mode è impostata su InProc.The End event is raised only when the session state mode is set to InProc.

Per migliorare le prestazioni, le sessioni che usano i cookie non allocare spazio di archiviazione di sessione fino a quando i dati vengono effettivamente archiviati nel Session oggetto.To improve performance, sessions that use cookies do not allocate session storage until data is actually stored in the Session object. Per altre informazioni, vedere la proprietà SessionID.For more information, see the SessionID property.

Lo stato della sessione non viene mantenuto oltre i limiti dell'applicazione ASP.NET.Session state does not persist across ASP.NET application boundaries. Se un browser consente di passare a un'altra applicazione, le informazioni della sessione non sono disponibile per la nuova applicazione.If a browser navigates to another application, the session information is not available to the new application.

I valori della sessione vengono archiviati in memoria nel server Web, per impostazione predefinita.Session values are stored in memory on the Web server, by default. È anche possibile archiviare i valori della sessione in un database di SQL Server, un server di stato ASP.NET o un server personalizzato.You can also store session values in a SQL Server database, an ASP.NET state server, or a custom server. In questo modo è possibile mantenere i valori di sessione nei casi in cui il processo di ASP.NET o IIS o l'applicazione ASP.NET viene riavviato e rendere disponibili i valori della sessione tra tutti i server in una Web farm.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. Questo comportamento viene configurato impostando la mode su un valore valido dell'attributo SessionStateMode valore le sessionState elemento di configurazione dell'applicazione.This behavior is configured by setting the mode attribute to a valid SessionStateMode value in the sessionState element of your application configuration. Per altre informazioni, vedere modalità stato sessione.For more information, see Session-State Modes.

Alternative per lo stato della sessione includono lo stato dell'applicazione (vedere la Application proprietà) e la cache ASP.NET (vedere il System.Web.Caching dello spazio dei nomi), quali variabili di archiviazione che sono accessibili da tutti gli utenti di un'applicazione ASP.NET, il profilo di ASP.NET (vedere la System.Web.Profile dello spazio dei nomi), che conserva i valori dell'utente in un archivio dati senza scadenza utilizzando un timeout; ASP.NET System.Web.UI.WebControls, che mantiene i valori di controllo nella ViewState; Cookies; la QueryString proprietà; e campi di un form HTML che sono disponibili da un HTTP POST utilizzando il Form raccolta.Alternatives 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. Per altre informazioni sulle differenze tra lo stato della sessione e altre alternative di gestione dello stato, vedere suggerimenti per la gestione dello stato di ASP.NET.For more details on the differences between session state and other state-management alternatives, see ASP.NET State Management Recommendations.

Proprietà

CodePage CodePage CodePage CodePage

Ottiene o imposta l'identificatore del set di caratteri per la sessione corrente.Gets or sets the character-set identifier for the current session.

Contents Contents Contents Contents

Ottiene un riferimento all'oggetto stato sessione corrente.Gets a reference to the current session-state object.

CookieMode CookieMode CookieMode CookieMode

Ottiene un valore che indica se l'applicazione è configurata per sessioni senza cookie.Gets a value that indicates whether the application is configured for cookieless sessions.

Count Count Count Count

Ottiene il numero di elementi nella raccolta degli stati sessione.Gets the number of items in the session-state collection.

IsCookieless IsCookieless IsCookieless IsCookieless

Ottiene un valore che indica se l'ID della sessione è incorporato nell'URL o memorizzato in un cookie HTTP.Gets a value indicating whether the session ID is embedded in the URL or stored in an HTTP cookie.

IsNewSession IsNewSession IsNewSession IsNewSession

Ottiene un valore che indica se la sessione è stata creata con la richiesta corrente.Gets a value indicating whether the session was created with the current request.

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

Ottiene un valore che indica se la sessione è di sola lettura.Gets a value indicating whether the session is read-only.

IsSynchronized IsSynchronized IsSynchronized IsSynchronized

Ottiene un valore che indica se l'accesso all'insieme di valori relativi allo stato sessione è sincronizzato (thread-safe).Gets a value indicating whether access to the collection of session-state values is synchronized (thread safe).

Item[Int32] Item[Int32] Item[Int32] Item[Int32]

Ottiene o imposta un valore di sessione in base all'indice numerico.Gets or sets a session value by numerical index.

Item[String] Item[String] Item[String] Item[String]

Ottiene o imposta un valore di sessione in base al nome.Gets or sets a session value by name.

Keys Keys Keys Keys

Ottiene un insieme di chiavi per tutti i valori archiviati nell'insieme dello stato sessione.Gets a collection of the keys for all values stored in the session-state collection.

LCID LCID LCID LCID

Recupera o imposta l'ID impostazioni locali (LCID) per la sessione corrente.Gets or sets the locale identifier (LCID) of the current session.

Mode Mode Mode Mode

Ottiene la modalità corrente dello stato sessione.Gets the current session-state mode.

SessionID SessionID SessionID SessionID

Ottiene l'identificatore univoco per la sessione.Gets the unique identifier for the session.

StaticObjects StaticObjects StaticObjects StaticObjects

Ottiene un insieme di oggetti dichiarati da tag <object Runat="Server" Scope="Session"/> all'interno del file Global.asax dell'applicazione ASP.NET.Gets a collection of objects declared by <object Runat="Server" Scope="Session"/> tags within the ASP.NET application file Global.asax.

SyncRoot SyncRoot SyncRoot SyncRoot

Ottiene un oggetto che può essere utilizzato per sincronizzare l'accesso all'insieme di valori relativi allo stato sessione.Gets an object that can be used to synchronize access to the collection of session-state values.

Timeout Timeout Timeout Timeout

Ottiene o imposta il periodo di tempo, in minuti, consentito tra le richieste prima che il provider dello stato sessione termini la sessione.Gets or sets the amount of time, in minutes, allowed between requests before the session-state provider terminates the session.

Metodi

Abandon() Abandon() Abandon() Abandon()

Annulla la sessione corrente.Cancels the current session.

Add(String, Object) Add(String, Object) Add(String, Object) Add(String, Object)

Aggiunge un nuovo elemento all'insieme dello stato sessione.Adds a new item to the session-state collection.

Clear() Clear() Clear() Clear()

Rimuove tutte le chiavi e i valori dalla raccolta di stato sessione.Removes all keys and values from the session-state collection.

CopyTo(Array, Int32) CopyTo(Array, Int32) CopyTo(Array, Int32) CopyTo(Array, Int32)

Copia la raccolta dei valori relativi allo stato sessione in una matrice unidimensionale, a partire dall'indice specificato nella matrice.Copies the collection of session-state values to a one-dimensional array, starting at the specified index in the array.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

Restituisce un enumeratore che consente di leggere i nomi delle variabili dello stato sessione nella sessione corrente.Returns an enumerator that can be used to read all the session-state variable names in the current session.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Inherited from Object)
Remove(String) Remove(String) Remove(String) Remove(String)

Elimina un elemento dall'insieme dello stato sessione.Deletes an item from the session-state collection.

RemoveAll() RemoveAll() RemoveAll() RemoveAll()

Rimuove tutte le chiavi e i valori dalla raccolta di stato sessione.Removes all keys and values from the session-state collection.

RemoveAt(Int32) RemoveAt(Int32) RemoveAt(Int32) RemoveAt(Int32)

Elimina un elemento in corrispondenza dell'indice specificato dall'insieme dello stato sessione.Deletes an item at a specified index from the session-state collection.

ToString() ToString() ToString() ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Inherited from Object)

Extension Methods

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un oggetto IEnumerable nel tipo specificato.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

Consente la parallelizzazione di una query.Enables parallelization of a query.

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

Converte un' IEnumerable a un IQueryable.Converts an IEnumerable to an IQueryable.

Si applica a

Vedi anche