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

Nell'esempio di codice seguente vengono impostati e recuperati i valori dallo 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 fornisce la gestione dello stato della sessione per consentire l'archiviazione di informazioni associate a una sessione del browser univoca 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 una raccolta di valori a cui fa riferimento un nome di chiave o un indice numerico.You can store a collection of values referenced by a key name or by numerical index. L'accesso ai valori e alle funzionalità della sessione è HttpSessionState disponibile tramite la classe, che è Session accessibile tramite la proprietà HttpContextdell'oggetto corrente Session o la proprietà Pagedell'oggetto.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 associati a una sessione del browser specifica usando un identificatore univoco.Session data is associated with a specific browser session using a unique identifier. Per impostazione predefinita, questo identificatore viene archiviato in un cookie di sessione non in scadenza nel browser, ma è anche possibile configurare l'applicazione per archiviare l'identificatore di sessione nell'URL impostando l' cookieless attributo su true o UseUri nel elemento sessionState della 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 fare in ASP.NET determinare se i cookie sono supportati dal browser specificando un valore UseDeviceProfile per l' 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 fare in ASP.NET determinare se i cookie sono abilitati per il browser specificando AutoDetect un valore cookieless per l'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 UseDeviceProfile quando si specifica o si abilita AutoDetect quando si specifica, l'identificatore di sessione verrà archiviato in un cookie; in caso contrario, l'identificatore di sessione verrà archiviato 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 mantenuti fino a quando una nuova richiesta viene effettuata dal browser prima del numero di Timeout minuti specificato nel passaggio della 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, Start viene generato l'evento di sessione.When a new session begins, the session Start event is raised. È possibile utilizzare questo evento per eseguire qualsiasi operazione aggiuntiva all'inizio di una sessione, ad esempio l'impostazione dei valori di sessione predefiniti.You can use this event to perform any additional work at the start of a session, such as setting default session values. Quando si verifica il timeout di una Abandon sessione, viene chiamato il metodo o l'applicazione ASP.NET viene arrestata, End viene generato l'evento Session.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 utilizzare questo evento per eseguire tutte le operazioni di pulizia necessarie.You can use this event to perform any necessary cleanup. L' End evento viene generato solo quando lo stato mode della sessione è impostato InProcsu.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 allocano l' Session archiviazione della sessione finché i dati non vengono effettivamente archiviati nell'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 passa a un'altra applicazione, le informazioni sulla sessione non sono disponibili per la nuova applicazione.If a browser navigates to another application, the session information is not available to the new application.

Per impostazione predefinita, i valori della sessione vengono archiviati in memoria sul server Web.Session values are stored in memory on the Web server, by default. È anche possibile archiviare i valori della sessione in un database 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 della sessione nei casi in cui il processo ASP.NET o IIS o l'applicazione ASP.NET venga riavviato e per rendere disponibili i valori della sessione in tutti i server di 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 l' mode attributo su un valore SessionStateMode valido nell'elemento sessionState della 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 ulteriori informazioni, vedere modalità stato sessione.For more information, see Session-State Modes.

Le alternative allo stato della sessione includono lo stato dell' Application applicazione (vedere la proprietà) e la cache System.Web.Caching ASP.NET (vedere lo spazio dei nomi), in cui sono archiviate le variabili a cui è possibile accedere da tutti gli utenti di un'applicazione ASP.NET. il profilo ASP.NET (vedere System.Web.Profile spazio dei nomi), che consente di salvare in modo permanente i valori utente in un archivio dati senza scadere usando un timeout; ASP.NET System.Web.UI.WebControls, che consente ViewStatedi salvare in modo permanente i valori di controllo in; ; la QueryString proprietà e i campi in un form HTML disponibili da un http POST usando la Form raccolta. 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. Per informazioni dettagliate sulle differenze tra lo stato della sessione e altre alternative di gestione dello stato, vedere consigli sulla 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)

Metodi di estensione

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 oggetto IEnumerable in un oggetto IQueryable.Converts an IEnumerable to an IQueryable.

Si applica a

Vedi anche