HttpSessionState Sınıf

Tanım

Oturum durumu değerlerinin yanı sıra oturum düzeyi ayarlarına ve yaşam süresi yönetim yöntemlerine erişim sağlar.

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
Devralma
HttpSessionState
Uygulamalar

Örnekler

Aşağıdaki kod örneği, oturum durumundan değerleri ayarlar ve alır.

Önemli

Bu örnekte, olası bir güvenlik tehdidi olan kullanıcı girişini kabul eden bir metin kutusu vardır. Varsayılan olarak, ASP.NET Web sayfaları kullanıcı girişinin betik veya HTML öğeleri içermediğini doğrular. Daha fazla bilgi için bkz. Betik Açıklarına Genel Bakış.

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

Açıklamalar

ASP.NET, birden çok istekte benzersiz bir tarayıcı oturumuyla ilişkili bilgileri depolamanıza olanak tanıyan oturum durumu yönetimi sağlar. Anahtar adıyla veya sayısal dizinle başvuruda bulunan bir değer koleksiyonunu depolayabilirsiniz. Oturum değerlerine ve işlevlerine erişim, geçerli HttpContextöğesinin HttpSessionStateSession veya özelliğinin SessionPageözelliği aracılığıyla erişilebilen sınıfı kullanılarak kullanılabilir.

Oturum verileri, benzersiz bir tanımlayıcı kullanılarak belirli bir tarayıcı oturumuyla ilişkilendirilir. Varsayılan olarak, bu tanımlayıcı tarayıcıda süresi dolmayan bir oturum tanımlama bilgisinde depolanır, ancak uygulamanızın özniteliğini veya uygulama yapılandırmanızın sessionState öğesi olarak ayarlayarak cookieless oturum tanımlayıcısını URL'de depolamak için UseUritrue uygulamanızı yapılandırabilirsiniz. ASP.NET özniteliği için değerini UseDeviceProfile belirterek tanımlama bilgilerinin tarayıcı tarafından desteklenip desteklenmediğini belirlemesini cookieless sağlayabilirsiniz. ASP.NET özniteliği için değerini belirterek tarayıcı için tanımlama bilgilerinin etkinleştirilip etkinleştirilmediğini belirlemesini AutoDetectcookieless de sağlayabilirsiniz. Tanımlama bilgileri belirtildiğinde UseDeviceProfile destekleniyorsa veya belirtildiğinde AutoDetect etkinleştiriliyorsa oturum tanımlayıcısı bir tanımlama bilgisinde depolanır; aksi takdirde oturum tanımlayıcıSı URL'de depolanır.

Oturumlar ilk istek sırasında başlatılır ve özellik geçişinde Timeout belirtilen dakika sayısından önce tarayıcı tarafından yeni bir istek yapıldığı sürece oturum değerleri kalıcı olur. Yeni bir oturum başladığında oturum Start olayı oluşturulur. Bu olayı, oturumun başında varsayılan oturum değerlerini ayarlama gibi ek işleri gerçekleştirmek için kullanabilirsiniz. Oturum zaman aşımına Abandon uğradıysa, yöntem çağrılır veya ASP.NET uygulaması kapatıldığında oturum End olayı tetikler. Gerekli temizleme işlemlerini gerçekleştirmek için bu olayı kullanabilirsiniz. Olay End yalnızca oturum durumu mode olarak ayarlandığında InProcoluşturulur.

Performansı geliştirmek için tanımlama bilgilerini kullanan oturumlar, veriler nesnede gerçekten depolanıncaya kadar oturum depolama alanı Session ayırmaz. Daha fazla bilgi için özelliğine SessionID bakın.

Oturum durumu ASP.NET uygulama sınırları arasında kalıcı olmaz. Tarayıcı başka bir uygulamaya giderse, oturum bilgileri yeni uygulama tarafından kullanılamaz.

Oturum değerleri varsayılan olarak Web sunucusundaki bellekte depolanır. Oturum değerlerini SQL Server veritabanında, ASP.NET durum sunucusunda veya özel sunucuda da depolayabilirsiniz. Bu, ASP.NET veya IIS işleminin veya ASP.NET uygulamasının yeniden başlatıldığı durumlarda oturum değerlerini korumanızı ve oturum değerlerini bir Web grubundaki tüm sunucularda kullanılabilir hale getirmenizi sağlar. Bu davranış, özniteliği uygulama yapılandırmanızın sessionState öğesinde geçerli SessionStateMode bir değere ayarlanarak mode yapılandırılır. Daha fazla bilgi için bkz. Oturum Durumu Modları.

Oturum durumunun alternatifleri arasında uygulama durumu (özelliğe bakınApplication) ve ASP.NET önbelleği (ad alanına bakınSystem.Web.Caching), bir ASP.NET uygulamasının tüm kullanıcıları tarafından erişilebilen değişkenleri depolayan ad alanı; zaman aşımını kullanmadan bir veri deposundaki kullanıcı değerlerini süresi dolmadan kalıcı hale getiren ASP.NET profili (ad alanına bakınSystem.Web.Profile), ASP.NET System.Web.UI.WebControls; özelliğinde denetim değerlerini QueryStringViewStateCookieskalıcı hale getiren ve HTML formundaki HTTP POST formunda bulunan alanlar bulunur koleksiyonu kullanarak.Form Oturum durumu ile diğer durum yönetimi alternatifleri arasındaki farklar hakkında daha fazla bilgi için bkz. ASP.NET Durum Yönetimi Önerileri.

Özellikler

CodePage

Geçerli oturum için karakter kümesi tanımlayıcısını alır veya ayarlar.

Contents

Geçerli oturum durumu nesnesine başvuru alır.

CookieMode

Uygulamanın tanımlama bilgisi olmayan oturumlar için yapılandırılıp yapılandırılmadığını gösteren bir değer alır.

Count

Oturum durumu koleksiyonundaki öğelerin sayısını alır.

IsCookieless

Oturum kimliğinin URL'ye mi eklendiğini yoksa http tanımlama bilgisinde mi depolandığını belirten bir değer alır.

IsNewSession

Oturumun geçerli istekle oluşturulup oluşturulmadığını belirten bir değer alır.

IsReadOnly

Oturumun salt okunur olup olmadığını belirten bir değer alır.

IsSynchronized

Oturum durumu değerleri koleksiyonuna erişimin eşitlenip eşitlenmediğini belirten bir değer alır (iş parçacığı güvenli).

Item[Int32]

Sayısal dizine göre bir oturum değeri alır veya ayarlar.

Item[String]

Oturum değerini ada göre alır veya ayarlar.

Keys

Oturum durumu koleksiyonunda depolanan tüm değerler için anahtarların bir koleksiyonunu alır.

LCID

Geçerli oturumun yerel ayar tanımlayıcısını (LCID) alır veya ayarlar.

Mode

Geçerli oturum durumu modunu alır.

SessionID

Oturumun benzersiz tanımlayıcısını alır.

StaticObjects

ASP.NET uygulama dosyası Global.asax içindeki etiketler tarafından <object Runat="Server" Scope="Session"/> bildirilen nesne koleksiyonunu alır.

SyncRoot

Oturum durumu değerleri koleksiyonuna erişimi eşitlemek için kullanılabilecek bir nesne alır.

Timeout

Oturum durumu sağlayıcısı oturumu sonlandırmadan önce istekler arasında izin verilen süreyi dakika cinsinden alır veya ayarlar.

Yöntemler

Abandon()

Geçerli oturumu iptal eder.

Add(String, Object)

Oturum durumu koleksiyonuna yeni bir öğe ekler.

Clear()

Oturum durumu koleksiyonundan tüm anahtarları ve değerleri kaldırır.

CopyTo(Array, Int32)

Oturum durumu değerleri koleksiyonunu dizideki belirtilen dizinden başlayarak tek boyutlu bir diziye kopyalar.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetEnumerator()

Geçerli oturumdaki tüm oturum durumu değişken adlarını okumak için kullanılabilecek bir numaralandırıcı döndürür.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
Remove(String)

Bir öğeyi oturum durumu koleksiyonundan siler.

RemoveAll()

Oturum durumu koleksiyonundan tüm anahtarları ve değerleri kaldırır.

RemoveAt(Int32)

Belirtilen dizindeki bir öğeyi oturum durumu koleksiyonundan siler.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Uzantı Metotları

Cast<TResult>(IEnumerable)

öğesinin IEnumerable öğelerini belirtilen türe atar.

OfType<TResult>(IEnumerable)

Bir öğesinin IEnumerable öğelerini belirtilen türe göre filtreler.

AsParallel(IEnumerable)

Sorgunun paralelleştirilmesini sağlar.

AsQueryable(IEnumerable)

bir IEnumerable öğesini öğesine IQueryabledönüştürür.

Şunlara uygulanır

Ayrıca bkz.