HttpSessionState Klass

Definition

Ger åtkomst till sessionstillståndsvärden samt inställningar på sessionsnivå och metoder för livslängdshantering.

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
Arv
HttpSessionState
Implementeringar

Exempel

Följande kodexempel anger och hämtar värden från sessionstillståndet.

Important

Det här exemplet har en textruta som accepterar användarindata, vilket är ett potentiellt säkerhetshot. Som standard kontrollerar ASP.NET webbsidor att användarindata inte innehåller skript- eller HTML-element. Mer information finns i Översikt över skriptexploateringar.

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

Kommentarer

ASP.NET tillhandahåller sessionstillståndshantering så att du kan lagra information som är associerad med en unik webbläsarsession för flera begäranden. Du kan lagra en samling värden som refereras till med ett nyckelnamn eller ett numeriskt index. Åtkomst till sessionsvärden och funktioner är tillgänglig med hjälp av HttpSessionState klassen, som är tillgänglig via Session egenskapen för den aktuella HttpContext, eller Session egenskapen för Page.

Sessionsdata associeras med en specifik webbläsarsession med hjälp av en unik identifierare. Som standard lagras den här identifieraren i en sessionscookie som inte upphör att gälla i webbläsaren, men du kan också konfigurera ditt program för att lagra sessionsidentifieraren i URL:en genom att ange cookieless attributet till true eller UseUri i sessionState-elementet i programkonfigurationen. Du kan ha ASP.NET avgöra om cookies stöds av webbläsaren genom att ange värdet UseDeviceProfile för attributet cookieless. Du kan också ha ASP.NET avgöra om cookies är aktiverade för webbläsaren genom att ange värdet AutoDetect för attributet cookieless. Om cookies stöds när UseDeviceProfile anges, eller aktiveras när AutoDetect anges, lagras sessionsidentifieraren i en cookie. Annars lagras sessionsidentifieraren i URL:en.

Sessioner startas under den första begäran och sessionsvärdena bevaras så länge en ny begäran görs av webbläsaren innan det antal minuter som anges i egenskapspasset Timeout . När en ny session börjar utlöses sessionshändelsen Start . Du kan använda den här händelsen för att utföra ytterligare arbete i början av en session, till exempel ange standardvärden för sessioner. När en session överskrider tidsgränsen anropas metoden Abandon, eller ASP.NET programmet stängs av, utlöses sessionen End händelsen. Du kan använda den här händelsen för att utföra nödvändig rensning. Händelsen End aktiveras endast när sessionstillståndet mode är inställt på InProc.

För att förbättra prestandan allokerar sessioner som använder cookies inte sessionslagring förrän data faktiskt lagras i Session objektet. För mer information, se egenskapen SessionID.

Sessionstillståndet bevaras inte över ASP.NET programgränser. Om en webbläsare navigerar till ett annat program är sessionsinformationen inte tillgänglig för det nya programmet.

Sessionsvärden lagras som standard i minnet på webbservern. Du kan också lagra sessionsvärden i en SQL Server databas, en ASP.NET tillståndsserver eller en anpassad server. På så sätt kan du bevara sessionsvärden i fall där ASP.NET eller IIS-processen eller ASP.NET programmet startas om och att göra sessionsvärden tillgängliga på alla servrar i en webbgrupp. Det här beteendet konfigureras genom att attributet anges mode till ett giltigt SessionStateMode värde i sessionState-elementet i programkonfigurationen. Mer information finns iSession-State lägen.

Alternativ till sessionstillstånd är programtillstånd (se egenskapen Application) och ASP.NET cache (se namnområdet System.Web.Caching), som lagrar variabler som kan nås av alla användare av ett ASP.NET program. profilen ASP.NET (se namnområdet System.Web.Profile), som bevarar användarvärden i ett datalager utan att de upphör att gälla, ASP.NET System.Web.UI.WebControls, som bevarar kontrollvärden i ViewState; Cookies; egenskapen QueryString; och fält i ett HTML-formulär som är tillgängliga från en HTTP-POST med hjälp av samlingen Form. Mer information om skillnaderna mellan sessionstillstånd och andra alternativ för tillståndshantering finns i ASP.NET State Management Recommendations.

Egenskaper

Name Description
CodePage

Hämtar eller anger teckenuppsättningsidentifieraren för den aktuella sessionen.

Contents

Hämtar en referens till det aktuella sessionstillståndsobjektet.

CookieMode

Hämtar ett värde som anger om programmet är konfigurerat för cookielösa sessioner.

Count

Hämtar antalet objekt i samlingen sessionstillstånd.

IsCookieless

Hämtar ett värde som anger om sessions-ID:t är inbäddat i URL:en eller lagras i en HTTP-cookie.

IsNewSession

Hämtar ett värde som anger om sessionen skapades med den aktuella begäran.

IsReadOnly

Hämtar ett värde som anger om sessionen är skrivskyddad.

IsSynchronized

Hämtar ett värde som anger om åtkomst till samlingen med sessionstillståndsvärden synkroniseras (trådsäkert).

Item[Int32]

Hämtar eller anger ett sessionsvärde efter numeriskt index.

Item[String]

Hämtar eller anger ett sessionsvärde efter namn.

Keys

Hämtar en samling nycklar för alla värden som lagras i samlingen sessionstillstånd.

LCID

Hämtar eller anger språkidentifieraren (LCID) för den aktuella sessionen.

Mode

Hämtar det aktuella läget för sessionstillstånd.

SessionID

Hämtar den unika identifieraren för sessionen.

StaticObjects

Hämtar en samling objekt som deklareras av <object Runat="Server" Scope="Session"/>-taggar i ASP.NET-programfilen Global.asax.

SyncRoot

Hämtar ett objekt som kan användas för att synkronisera åtkomst till samlingen av sessionstillståndsvärden.

Timeout

Hämtar eller anger hur lång tid i minuter som tillåts mellan begäranden innan sessionstillståndsprovidern avslutar sessionen.

Metoder

Name Description
Abandon()

Avbryter den aktuella sessionen.

Add(String, Object)

Lägger till ett nytt objekt i samlingen sessionstillstånd.

Clear()

Tar bort alla nycklar och värden från samlingen sessionstillstånd.

CopyTo(Array, Int32)

Kopierar samlingen av sessionstillståndsvärden till en endimensionell matris med början vid det angivna indexet i matrisen.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetEnumerator()

Returnerar en uppräknare som kan användas för att läsa alla namn på sessionstillståndsvariabler i den aktuella sessionen.

GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
Remove(String)

Tar bort ett objekt från samlingen sessionstillstånd.

RemoveAll()

Tar bort alla nycklar och värden från samlingen sessionstillstånd.

RemoveAt(Int32)

Tar bort ett objekt vid ett angivet index från samlingen sessionstillstånd.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Tilläggsmetoder

Name Description
AsParallel(IEnumerable)

Möjliggör parallellisering av en fråga.

AsQueryable(IEnumerable)

Konverterar en IEnumerable till en IQueryable.

Cast<TResult>(IEnumerable)

Omvandlar elementen i en IEnumerable till den angivna typen.

OfType<TResult>(IEnumerable)

Filtrerar elementen i en IEnumerable baserat på en angiven typ.

Gäller för

Se även