HttpSessionState Classe

Definição

Fornece acesso aos valores de estado de sessão, bem como configurações do nível de sessão e métodos de gerenciamento do tempo de vida.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
Herança
HttpSessionState
Implementações

Exemplos

O exemplo de código a seguir define e recupera valores do estado de sessão.The following code example sets and retrieves values from session state.

Importante

Este exemplo tem uma caixa de texto que aceita a entrada do usuário, que é uma possível ameaça à segurança.This example has a text box that accepts user input, which is a potential security threat. Por padrão, as páginas da Web do ASP.NET validam que a entrada do usuário não inclui elementos de script ou HTML.By default, ASP.NET Web pages validate that user input does not include script or HTML elements. Para obter mais informações, consulte Visão geral de explorações 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>

Comentários

O ASP.NET fornece gerenciamento de estado de sessão para permitir que você armazene informações associadas a uma sessão de navegador exclusiva em várias solicitações.ASP.NET provides session-state management to enable you to store information associated with a unique browser session across multiple requests. Você pode armazenar uma coleção de valores referenciados por um nome de chave ou por índice numérico.You can store a collection of values referenced by a key name or by numerical index. O acesso aos valores de sessão e à funcionalidade está HttpSessionState disponível usando a classe, que pode Session ser acessada HttpContextpor meio da Session propriedade da atual Pageou da Propriedade do.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.

Os dados da sessão são associados a uma sessão específica do navegador usando um identificador exclusivo.Session data is associated with a specific browser session using a unique identifier. Por padrão, esse identificador é armazenado em um cookie de sessão sem expiração no navegador, mas você também pode configurar seu aplicativo para armazenar o identificador de sessão na URL, definindo o cookieless atributo como true ou UseUri no elemento sessionState da configuração do aplicativo.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. Você pode fazer com que o ASP.net determine se os cookies têm suporte no navegador especificando um UseDeviceProfile valor de cookieless para o atributo.You can have ASP.NET determine whether cookies are supported by the browser by specifying a value of UseDeviceProfile for the cookieless attribute. Você também pode fazer com que o ASP.net determine se os cookies estão habilitados para o navegador AutoDetect especificando um cookieless valor de para o atributo.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 houver suporte para cookies UseDeviceProfile quando for especificado ou habilitado quando AutoDetect for especificado, o identificador de sessão será armazenado em um cookie; caso contrário, o identificador de sessão será armazenado na 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.

As sessões serão iniciadas durante a primeira solicitação e os valores de sessão persistirão, desde que uma nova solicitação seja feita pelo navegador antes do número de minutos Timeout especificado na propriedade 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. Quando uma nova sessão é iniciada, Start o evento de sessão é gerado.When a new session begins, the session Start event is raised. Você pode usar esse evento para executar qualquer trabalho adicional no início de uma sessão, como a definição de valores de sessão padrão.You can use this event to perform any additional work at the start of a session, such as setting default session values. Quando uma sessão atinge o tempo limite Abandon , o método é chamado ou o aplicativo ASP.net é desligado, o evento End de sessão é gerado.When a session times out, the Abandon method is called, or the ASP.NET application is shut down, the session End event is raised. Você pode usar esse evento para executar qualquer limpeza necessária.You can use this event to perform any necessary cleanup. O End evento é gerado somente quando o estado mode da sessão é definido InProccomo.The End event is raised only when the session state mode is set to InProc.

Para melhorar o desempenho, as sessões que usam cookies não alocam armazenamento de sessão até que os dados Session sejam realmente armazenados no objeto.To improve performance, sessions that use cookies do not allocate session storage until data is actually stored in the Session object. Para obter mais informações, consulte a propriedade SessionID.For more information, see the SessionID property.

O estado da sessão não persiste nos limites do aplicativo ASP.NET.Session state does not persist across ASP.NET application boundaries. Se um navegador navegar para outro aplicativo, as informações da sessão não estarão disponíveis para o novo aplicativo.If a browser navigates to another application, the session information is not available to the new application.

Os valores de sessão são armazenados na memória no servidor Web, por padrão.Session values are stored in memory on the Web server, by default. Você também pode armazenar valores de sessão em um banco de dados SQL Server, um servidor de estado ASP.NET ou um servidor personalizado.You can also store session values in a SQL Server database, an ASP.NET state server, or a custom server. Isso permite que você preserve os valores de sessão em casos em que o processo ASP.NET ou IIS ou o aplicativo ASP.NET seja reiniciado e torne os valores de sessão disponíveis em todos os servidores em um 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. Esse comportamento é configurado definindo o mode atributo como um valor válido SessionStateMode no elemento SessionState da configuração do aplicativo.This behavior is configured by setting the mode attribute to a valid SessionStateMode value in the sessionState element of your application configuration. Para obter mais informações, consulte modos de estado da sessão.For more information, see Session-State Modes.

Alternativas para estado de sessão incluem o estado do aplicativo Application (consulte a propriedade) e o cache ASP.NET System.Web.Caching (consulte o namespace), que armazenam variáveis que podem ser acessadas por todos os usuários de um aplicativo ASP.net; o perfil ASP.net (consulte o System.Web.Profile namespace), que persiste valores de usuário em um repositório de dados sem a necessidade de expirar usando um tempo limite; ASP.NET System.Web.UI.WebControls, que mantém os valores ViewStatede controle no; ; a QueryString Propriedade e os campos em um formulário HTML que estão disponíveis de um http POST usando a Form coleção. 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. Para obter mais detalhes sobre as diferenças entre o estado da sessão e outras alternativas de gerenciamento de estado, consulte recomendações de gerenciamento de estado ASP.net.For more details on the differences between session state and other state-management alternatives, see ASP.NET State Management Recommendations.

Propriedades

CodePage

Obtém ou define o identificador de conjunto de caracteres para a serialização atual.Gets or sets the character-set identifier for the current session.

Contents

Obtém uma referência ao objeto de estado da sessão atual.Gets a reference to the current session-state object.

CookieMode

Obtém um valor que indica se o aplicativo está configurado para sessões sem cookies.Gets a value that indicates whether the application is configured for cookieless sessions.

Count

Obtém o número de itens na coleção de estado de sessão.Gets the number of items in the session-state collection.

IsCookieless

Obtém um valor que indica se a ID de sessão é inserida na URL ou armazenada em um cookie HTTP.Gets a value indicating whether the session ID is embedded in the URL or stored in an HTTP cookie.

IsNewSession

Obtém um valor que indica se a sessão foi criada com a solicitação atual.Gets a value indicating whether the session was created with the current request.

IsReadOnly

Obtém um valor que indica se a sessão é somente leitura.Gets a value indicating whether the session is read-only.

IsSynchronized

Obtém um valor que indica se o acesso à coleção de valores de estado de sessão é sincronizado (thread-safe).Gets a value indicating whether access to the collection of session-state values is synchronized (thread safe).

Item[Int32]

Obtém ou define um valor de sessão por índice numérico.Gets or sets a session value by numerical index.

Item[String]

Obtém ou define um valor de sessão pelo nome.Gets or sets a session value by name.

Keys

Obtém uma coleção de chaves para todos os valores armazenados na coleção de estado da sessão.Gets a collection of the keys for all values stored in the session-state collection.

LCID

Obtém ou define o LCID (identificador de localidade) da sessão atual.Gets or sets the locale identifier (LCID) of the current session.

Mode

Obtém o modo de estado da sessão atual.Gets the current session-state mode.

SessionID

Obtém o identificador exclusivo para a sessão.Gets the unique identifier for the session.

StaticObjects

Obtém uma coleção de objetos declarados por marcas <object Runat="Server" Scope="Session"/> dentro do arquivo de aplicativo Global.asax do ASP.NET.Gets a collection of objects declared by <object Runat="Server" Scope="Session"/> tags within the ASP.NET application file Global.asax.

SyncRoot

Obtém um objeto que pode ser usado para sincronizar o acesso à coleção de valores de estado de sessão.Gets an object that can be used to synchronize access to the collection of session-state values.

Timeout

Obtém ou define a quantidade de tempo, em minutos, permitida entre solicitações antes que o provedor de estado de sessão termine a sessão.Gets or sets the amount of time, in minutes, allowed between requests before the session-state provider terminates the session.

Métodos

Abandon()

Cancela a sessão atual.Cancels the current session.

Add(String, Object)

Adiciona um novo item à coleção de estado da sessão.Adds a new item to the session-state collection.

Clear()

Remove todas as chaves e os valores da coleção de estado da sessão.Removes all keys and values from the session-state collection.

CopyTo(Array, Int32)

Copia a coleção de valores de estado de sessão para uma matriz unidimensional, começando no índice especificado na matriz.Copies the collection of session-state values to a one-dimensional array, starting at the specified index in the array.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

(Herdado de Object)
GetEnumerator()

Retorna um enumerador que pode ser usado para ler todos os nomes de variável de estado de sessão na sessão atual.Returns an enumerator that can be used to read all the session-state variable names in the current session.

GetHashCode()

Serve como a função de hash padrão.Serves as the default hash function.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Herdado de Object)
Remove(String)

Exclui um item da coleção de estado de sessão.Deletes an item from the session-state collection.

RemoveAll()

Remove todas as chaves e os valores da coleção de estado da sessão.Removes all keys and values from the session-state collection.

RemoveAt(Int32)

Exclui um item em um índice especificado da coleção de estado de sessão.Deletes an item at a specified index from the session-state collection.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Herdado de Object)

Métodos de Extensão

Cast<TResult>(IEnumerable)

Converte os elementos de um IEnumerable para o tipo especificado.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filtra os elementos de um IEnumerable com base em um tipo especificado.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Habilita a paralelização de uma consulta.Enables parallelization of a query.

AsQueryable(IEnumerable)

Converte um IEnumerable em um IQueryable.Converts an IEnumerable to an IQueryable.

Aplica-se a

Veja também