HttpSessionState Osztály

Definíció

Hozzáférést biztosít a munkamenet-állapot értékeihez, valamint a munkamenetszintű beállításokhoz és az élettartam-kezelési módszerekhez.

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
Öröklődés
HttpSessionState
Megvalósítás

Példák

Az alábbi példakód beállítja és lekéri az értékeket a munkamenet állapotából.

Important

Ebben a példában egy szövegdoboz található, amely elfogadja a felhasználói bemenetet, ami potenciális biztonsági fenyegetés. Alapértelmezés szerint ASP.NET weblapok ellenőrzik, hogy a felhasználói bevitel nem tartalmaz-e szkript- vagy HTML-elemeket. További információ: Szkript kihasználása – áttekintés.

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

Megjegyzések

ASP.NET munkamenet-állapotkezelést biztosít, amely lehetővé teszi az egyedi böngésző munkamenethez társított információk tárolását több kérés között. Kulcsnév vagy numerikus index alapján hivatkozott értékek gyűjteményét tárolhatja. A munkamenet-értékekhez és a funkciókhoz való hozzáférés az HttpSessionState osztály használatával érhető el, amely az Session aktuális vagy az HttpContext adott Sessiontulajdonság tulajdonságán Pagekeresztül érhető el.

A munkamenet-adatok egy adott böngésző munkamenethez lesznek társítva egy egyedi azonosító használatával. Alapértelmezés szerint ez az azonosító egy nem lejáró munkamenet-cookie-ban van tárolva a böngészőben, de úgy is konfigurálhatja az alkalmazást, hogy a munkamenet-azonosítót az URL-címben tárolja az alkalmazáskonfiguráció cookieless elemének beállításával trueUseUri. ASP.NET meghatározhatja, hogy a böngésző támogatja-e a cookie-kat a UseDeviceProfile attribútum cookieless értékének megadásával. A AutoDetect attribútum cookieless értékének megadásával ASP.NET is meghatározhatja, hogy a cookie-k engedélyezve vannak-e a böngészőben. Ha a cookie-k megadásakor UseDeviceProfile támogatottak, vagy AutoDetect ha meg van adva, akkor a munkamenet-azonosító egy cookie-ban lesz tárolva, ellenkező esetben a munkamenet-azonosító az URL-címben lesz tárolva.

A munkamenetek az első kérés során indulnak el, és a munkamenetek értékei mindaddig megmaradnak, amíg a böngésző új kérést küld a Timeout tulajdonságbérletben megadott percek száma előtt. Amikor új munkamenet kezdődik, a munkamenet Start eseménye létrejön. Ezzel az eseménysel bármilyen további munkát elvégezhet a munkamenet elején, például beállíthatja az alapértelmezett munkamenet-értékeket. Amikor egy munkamenet túllépi az időkorlátot, a rendszer meghívja a Abandon metódust, vagy a ASP.NET alkalmazás leáll, a munkamenet End esemény létrejön. Az esemény használatával elvégezheti a szükséges törlést. Az End esemény csak akkor jön létre, ha a munkamenet állapota mode be van állítva InProc.

A teljesítmény javítása érdekében a cookie-kat használó munkamenetek nem foglalnak le munkamenet-tárolót, amíg az adatok ténylegesen nem tárolódnak az Session objektumban. További információért lásd a SessionID tulajdonságot.

A munkamenet állapota nem marad fenn ASP.NET alkalmazáshatárokon. Ha egy böngésző egy másik alkalmazáshoz navigál, a munkamenet adatai nem érhetők el az új alkalmazás számára.

A munkamenet-értékek alapértelmezés szerint a webkiszolgáló memóriájában vannak tárolva. A munkamenet-értékeket SQL Server adatbázisban, ASP.NET állapotkiszolgálón vagy egyéni kiszolgálón is tárolhatja. Ez lehetővé teszi a munkamenet-értékek megőrzését olyan esetekben, amikor a ASP.NET vagy az IIS-folyamat vagy az ASP.NET alkalmazás újraindul, és a munkamenet-értékeket elérhetővé teszi a webfarm összes kiszolgálóján. Ezt a viselkedést úgy konfigurálja, hogy az mode attribútumot érvényes SessionStateMode értékre állítja az alkalmazáskonfiguráció sessionState elemében. További információ: Session-State módok.

A munkamenet-állapot alternatívái közé tartozik az alkalmazás állapota (lásd a Application tulajdonságot) és a ASP.NET gyorsítótár (lásd a System.Web.Caching névteret), amely olyan változókat tárol, amelyeket egy ASP.NET-alkalmazás összes felhasználója elérhet; a ASP.NET profil (lásd a System.Web.Profile névteret), amely időtúllépés nélkül megőrzi a felhasználói értékeket egy adattárban; ASP.NET System.Web.UI.WebControls, amely megőrzi a vezérlőértékeket a ViewState; Cookies; a QueryString tulajdonság; és a HTTP-POST a Form gyűjtemény használatával elérhető HTML-űrlap mezői. A munkamenet-állapot és más állapotkezelési alternatívák közötti különbségekről további információt a ASP.NET Állapotkezelési javaslatok című témakörben talál.

Tulajdonságok

Name Description
CodePage

Lekéri vagy beállítja az aktuális munkamenethez tartozó karakterkészlet-azonosítót.

Contents

Az aktuális munkamenet-állapot objektumra mutató hivatkozást kap.

CookieMode

Olyan értéket kap, amely jelzi, hogy az alkalmazás konfigurálva van-e cookie nélküli munkamenetekhez.

Count

Lekéri a munkamenet-állapot gyűjteményében lévő elemek számát.

IsCookieless

Beolvas egy értéket, amely jelzi, hogy a munkamenet-azonosító beágyazva van-e az URL-címbe, vagy EGY HTTP-cookie-ban van-e tárolva.

IsNewSession

Beolvas egy értéket, amely jelzi, hogy a munkamenet az aktuális kéréssel lett-e létrehozva.

IsReadOnly

Beolvas egy értéket, amely jelzi, hogy a munkamenet írásvédett-e.

IsSynchronized

Beolvas egy értéket, amely jelzi, hogy a munkamenet-állapot értékeinek gyűjteményéhez való hozzáférés szinkronizálva van-e (a szál biztonságos).

Item[Int32]

Beolvas vagy beállít egy munkamenet-értéket numerikus index alapján.

Item[String]

Beolvas vagy beállít egy munkamenet-értéket név szerint.

Keys

Lekéri a munkamenet-állapot gyűjteményében tárolt összes érték kulcsainak gyűjteményét.

LCID

Lekéri vagy beállítja az aktuális munkamenet területi azonosítóját (LCID).

Mode

Lekéri az aktuális munkamenet-állapot módot.

SessionID

Lekéri a munkamenet egyedi azonosítót.

StaticObjects

Lekéri <object Runat="Server" Scope="Session"/> címkék által deklarált objektumok gyűjteményét a Global.asax ASP.NET alkalmazásfájlban.

SyncRoot

Lekéri a munkamenet-állapot értékeinek gyűjteményéhez való hozzáférés szinkronizálására használható objektumot.

Timeout

Percek alatt lekéri vagy beállítja a kérések között engedélyezett időt, mielőtt a munkamenet-állapot szolgáltatója leállítja a munkamenetet.

Metódusok

Name Description
Abandon()

Megszakítja az aktuális munkamenetet.

Add(String, Object)

Új elemet ad hozzá a munkamenet-állapot gyűjteményéhez.

Clear()

Eltávolítja az összes kulcsot és értéket a munkamenet-állapot gyűjteményéből.

CopyTo(Array, Int32)

A munkamenet-állapot értékeinek gyűjteményét egy egydimenziós tömbbe másolja, a tömb megadott indexétől kezdve.

Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetEnumerator()

Egy enumerátort ad vissza, amely az aktuális munkamenet összes munkamenet-állapot változójának beolvasására használható.

GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
Remove(String)

Töröl egy elemet a munkamenet-állapot gyűjteményéből.

RemoveAll()

Eltávolítja az összes kulcsot és értéket a munkamenet-állapot gyűjteményéből.

RemoveAt(Int32)

Egy adott index elemének törlése a munkamenet-állapot gyűjteményéből.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

Bővítő metódusok

Name Description
AsParallel(IEnumerable)

Lehetővé teszi a lekérdezés párhuzamosítását.

AsQueryable(IEnumerable)

Átalakítja az egyiket IEnumerableIQueryable.

Cast<TResult>(IEnumerable)

Egy elem elemeit IEnumerable a megadott típusra veti.

OfType<TResult>(IEnumerable)

Egy adott típus alapján szűri IEnumerable egy adott elem elemeit.

A következőre érvényes:

Lásd még