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, birden çok istekte benzersiz bir tarayıcı oturumuyla ilişkili bilgileri depolamanıza olanak tanımak için 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 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. 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 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şi sırasında belirtilen Timeout 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 uygulama kapatılırsa 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ı artırmak için, tanımlama bilgilerini kullanan oturumlar, veriler nesnede gerçekten depolanana 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 bir 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 durumuna alternatif olarak uygulama durumu (özelliğine 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 bir veri deposundaki kullanıcı değerlerini kalıcı hale getiren ASP.NET profili (ad alanına bakınSystem.Web.Profile), ; özelliğinde denetim değerlerini QueryStringViewStateCookieskalıcı hale getiren ASP.NET System.Web.UI.WebControlsve HTML formundaki HTTP 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
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 BIR 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 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 nesnesi 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ğerlerinin 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) |
Öğesinin IEnumerable öğelerini belirtilen türe göre filtreler. |
AsParallel(IEnumerable) |
Sorgunun paralelleştirilmesini etkinleştirir. |
AsQueryable(IEnumerable) |
bir IEnumerable öğesini öğesine IQueryabledönüştürür. |