HttpSessionState Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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>
</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>
</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>
</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>
</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, benzersiz bir tarayıcı oturumuyla ilişkili bilgileri birden çok istekte 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 öğesinin HttpSessionState özelliği veya Session özelliği Pagearacılığıyla Session erişilebilen sınıfı kullanılarak kullanılabilir.HttpContext
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 trueUseUri veya uygulama yapılandırmanızın sessionState öğesi olarak ayarlayarak cookieless oturum tanımlayıcısını URL'de depoacak şekilde de 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. Ayrıca ASP.NET özniteliği için değerini AutoDetect belirterek tarayıcı için tanımlama bilgilerinin etkinleştirilip etkinleştirilmediğini belirlemesini cookieless sağlayabilirsiniz. Tanımlama bilgileri belirtildiğinde UseDeviceProfile desteklenirse veya belirtildiğinde AutoDetect etkinleştirilirse, 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. Bir oturum zaman aşımına Abandon uğradıysa, yöntem çağrılır veya ASP.NET uygulaması kapatılır, oturum End olayı oluşturulur. 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ı artırmak için, tanımlama bilgilerini kullanan oturumlar, veriler nesnede depolanana kadar oturum depolama alanı Session ayırmaz. Daha fazla bilgi için SessionID özelliğine 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. Session-State Modları.
Oturum durumuna alternatif olarak uygulama durumu (özelliğe bakınApplication) ve bir ASP.NET uygulamasının tüm kullanıcıları tarafından erişilebilen değişkenleri depolayan ASP.NET önbelleği (ad alanına bakınSystem.Web.Caching), zaman aşımına uğramadan veri deposundaki kullanıcı değerlerini 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 ViewStateCookieskalıcı hale getiren html formundaki alanlar ; ; QueryString özelliği ve BIR HTML POST formundaki alanlar bulunur. koleksiyonu kullanarakForm. 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
| Name | Description |
|---|---|
| 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 öğe sayısını alır. |
| IsCookieless |
Oturum kimliğinin URL'ye eklendiğini veya HTTP tanımlama bilgisinde 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 |
| 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
| Name | Description |
|---|---|
| Abandon() |
Geçerli oturumu iptal eder. |
| Add(String, Object) |
Oturum durumu koleksiyonuna yeni bir öğe ekler. |
| Clear() |
Oturum durumu koleksiyonundaki 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() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
| MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
| Remove(String) |
Bir öğeyi oturum durumu koleksiyonundan siler. |
| RemoveAll() |
Oturum durumu koleksiyonundaki 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 bir dize döndürür. (Devralındığı yer: Object) |
Uzantı Metotları
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
Sorgunun paralelleştirilmesini etkinleştirir. |
| AsQueryable(IEnumerable) |
bir IEnumerable öğesine IQueryabledönüştürür. |
| Cast<TResult>(IEnumerable) |
öğesinin IEnumerable öğelerini belirtilen türe yazar. |
| OfType<TResult>(IEnumerable) |
Belirtilen türe göre bir IEnumerable öğesinin öğelerini filtreler. |