HttpSessionState Klas

Definitie

Biedt toegang tot sessiestatuswaarden en instellingen op sessieniveau en methoden voor levensduurbeheer.

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
Overname
HttpSessionState
Implementeringen

Voorbeelden

In het volgende codevoorbeeld worden waarden uit de sessiestatus ingesteld en opgehaald.

Important

Dit voorbeeld heeft een tekstvak dat gebruikersinvoer accepteert. Dit is een mogelijke beveiligingsrisico. Standaard valideren ASP.NET webpagina's dat gebruikersinvoer geen script- of HTML-elementen bevat. Zie Overzicht van Script Exploits voor meer informatie.

<%@ 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>

Opmerkingen

ASP.NET biedt sessiestatusbeheer waarmee u gegevens kunt opslaan die zijn gekoppeld aan een unieke browsersessie voor meerdere aanvragen. U kunt een verzameling waarden opslaan waarnaar wordt verwezen door een sleutelnaam of door een numerieke index. Toegang tot sessiewaarden en -functionaliteit is beschikbaar met behulp van de HttpSessionState klasse, die toegankelijk is via de eigenschap van de Session huidige HttpContext, of de Session eigenschap van de Page.

Sessiegegevens zijn gekoppeld aan een specifieke browsersessie met behulp van een unieke id. Deze id wordt standaard opgeslagen in een sessiecookor die niet verloopt in de browser, maar u kunt uw toepassing ook configureren om de sessie-id op te slaan in de URL door het cookieless kenmerk true in of UseUri in het sessionState-element van uw toepassingsconfiguratie in te stellen. U kunt ASP.NET bepalen of cookies worden ondersteund door de browser door een waarde van UseDeviceProfile op te geven voor het kenmerk cookieless. U kunt ook ASP.NET bepalen of cookies zijn ingeschakeld voor de browser door een waarde van AutoDetect op te geven voor het kenmerk cookieless. Als cookies worden ondersteund wanneer UseDeviceProfile deze worden opgegeven of ingeschakeld wanneer AutoDetect deze is opgegeven, wordt de sessie-id opgeslagen in een cookie. Anders wordt de sessie-id opgeslagen in de URL.

Sessies worden gestart tijdens de eerste aanvraag en sessiewaarden blijven behouden zolang er door de browser een nieuwe aanvraag wordt gedaan voordat het aantal minuten dat is opgegeven in de Timeout eigenschapspas. Wanneer een nieuwe sessie begint, wordt de sessie-gebeurtenis Start gegenereerd. U kunt deze gebeurtenis gebruiken om extra werk uit te voeren aan het begin van een sessie, zoals het instellen van standaardsessiewaarden. Wanneer er een time-out optreedt voor een sessie, wordt de methode Abandon aangeroepen of wordt de ASP.NET toepassing afgesloten, wordt de sessie End gebeurtenis gegenereerd. U kunt deze gebeurtenis gebruiken om de benodigde opschoning uit te voeren. De End gebeurtenis wordt alleen gegenereerd wanneer de sessiestatus mode is ingesteld op InProc.

Om de prestaties te verbeteren, wijzen sessies die cookies gebruiken geen sessieopslag toe totdat gegevens daadwerkelijk in het Session object worden opgeslagen. Voor meer informatie, zie de eigenschap SessionID.

Sessiestatus blijft niet bestaan over ASP.NET toepassingsgrenzen. Als een browser naar een andere toepassing navigeert, is de sessiegegevens niet beschikbaar voor de nieuwe toepassing.

Sessiewaarden worden standaard opgeslagen in het geheugen op de webserver. U kunt ook sessiewaarden opslaan in een SQL Server-database, een ASP.NET statusserver of een aangepaste server. Hierdoor kunt u sessiewaarden behouden in gevallen waarin het ASP.NET- of IIS-proces of de ASP.NET toepassing opnieuw wordt opgestart en sessiewaarden beschikbaar maakt op alle servers in een webfarm. Dit gedrag wordt geconfigureerd door het mode kenmerk in te stellen op een geldige SessionStateMode waarde in het sessionState-element van uw toepassingsconfiguratie. Zie Session-State Modi voor meer informatie.

Alternatieven voor sessiestatus zijn toepassingsstatus (zie de eigenschap Application) en de ASP.NET-cache (zie de System.Web.Caching-naamruimte), waarin variabelen worden opgeslagen die toegankelijk zijn voor alle gebruikers van een ASP.NET-toepassing; het ASP.NET-profiel (zie de System.Web.Profile-naamruimte), die gebruikerswaarden in een gegevensarchief persistent maakt zonder dat ze een time-out gebruiken; ASP.NET System.Web.UI.WebControls, die controlewaarden in de ViewState; Cookies; de eigenschap QueryString; en velden op een HTML-formulier die beschikbaar zijn via een HTTP-POST met behulp van de verzameling Form. Zie ASP.NET Aanbevelingen voor statusbeheer voor meer informatie over de verschillen tussen sessiestatus en andere alternatieven voor statusbeheer.

Eigenschappen

Name Description
CodePage

Hiermee haalt u de tekenset-id voor de huidige sessie op of stelt u deze in.

Contents

Hiermee wordt een verwijzing naar het huidige sessiestatusobject opgehaald.

CookieMode

Hiermee wordt een waarde opgehaald die aangeeft of de toepassing is geconfigureerd voor sessies zonder cookies.

Count

Hiermee haalt u het aantal items in de verzameling sessiestatus op.

IsCookieless

Hiermee wordt een waarde opgehaald die aangeeft of de sessie-id is ingesloten in de URL of is opgeslagen in een HTTP-cookie.

IsNewSession

Hiermee wordt een waarde opgehaald die aangeeft of de sessie is gemaakt met de huidige aanvraag.

IsReadOnly

Hiermee wordt een waarde opgehaald die aangeeft of de sessie alleen-lezen is.

IsSynchronized

Hiermee wordt een waarde opgehaald die aangeeft of de toegang tot de verzameling sessiestatuswaarden wordt gesynchroniseerd (thread safe).

Item[Int32]

Haalt een sessiewaarde op of stelt deze in op basis van een numerieke index.

Item[String]

Hiermee haalt u een sessiewaarde op naam op of stelt u deze in.

Keys

Hiermee haalt u een verzameling sleutels op voor alle waarden die zijn opgeslagen in de verzameling sessiestatus.

LCID

Hiermee haalt u de landinstellings-id (LCID) van de huidige sessie op of stelt u deze in.

Mode

Hiermee haalt u de huidige sessiestatusmodus op.

SessionID

Hiermee haalt u de unieke id voor de sessie op.

StaticObjects

Hiermee haalt u een verzameling objecten op die zijn gedeclareerd door <object Runat="Server" Scope="Session"/> tags in het ASP.NET toepassingsbestand Global.asax.

SyncRoot

Hiermee haalt u een object op dat kan worden gebruikt om de toegang tot de verzameling sessiestatuswaarden te synchroniseren.

Timeout

Hiermee haalt u de hoeveelheid tijd in minuten op die is toegestaan tussen aanvragen voordat de provider van de sessiestatus de sessie beëindigt.

Methoden

Name Description
Abandon()

Annuleert de huidige sessie.

Add(String, Object)

Hiermee voegt u een nieuw item toe aan de verzameling sessiestatus.

Clear()

Hiermee verwijdert u alle sleutels en waarden uit de verzameling sessiestatus.

CopyTo(Array, Int32)

Kopieert de verzameling sessiestatuswaarden naar een eendimensionale matrix, te beginnen bij de opgegeven index in de matrix.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetEnumerator()

Retourneert een enumerator die kan worden gebruikt om alle namen van de sessiestatusvariabelen in de huidige sessie te lezen.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
Remove(String)

Hiermee verwijdert u een item uit de verzameling sessiestatus.

RemoveAll()

Hiermee verwijdert u alle sleutels en waarden uit de verzameling sessiestatus.

RemoveAt(Int32)

Hiermee verwijdert u een item in een opgegeven index uit de verzameling sessiestatus.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Extensiemethoden

Name Description
AsParallel(IEnumerable)

Hiermee schakelt u parallelle uitvoering van een query in.

AsQueryable(IEnumerable)

Converteert een IEnumerable naar een IQueryable.

Cast<TResult>(IEnumerable)

Cast de elementen van een IEnumerable naar het opgegeven type.

OfType<TResult>(IEnumerable)

Hiermee filtert u de elementen van een IEnumerable op basis van een opgegeven type.

Van toepassing op

Zie ook