For investors
股價(jià):
5.36 美元 %For investors
股價(jià):
5.36 美元 %認(rèn)真做教育 專心促就業(yè)
1.Session對(duì)象的基本概念
Session英文意思是:“會(huì)話、開(kāi)會(huì)”,這是很基礎(chǔ)的了解啦。使用Session對(duì)象可以存儲(chǔ)不同用戶個(gè)人會(huì)話所需的信息。當(dāng)用戶在Web應(yīng)用程序的程序之間跳轉(zhuǎn)時(shí),存儲(chǔ)在Session的變量不會(huì)被清除,而始終存在,只要客戶瀏覽器接入一個(gè)Web服務(wù)器,在服務(wù)器中就會(huì)創(chuàng)建一個(gè)具有該用戶專用ID號(hào)的Session對(duì)象,在其中可以存放上線用戶的私有變量信息,只要用戶不下線,自己的Session變量存在;一旦用戶下線,Session變量會(huì)消失。如果Web服務(wù)器停止了,Session變量也會(huì)消失。
2.Session對(duì)象的工作機(jī)制
ASP.NET中可以通過(guò)向客戶程序發(fā)送唯一的Cookie來(lái)管理服務(wù)器上的Session對(duì)象。如果客戶端瀏覽器關(guān)閉Cookie支持,則服務(wù)器端的Session功能也會(huì)失效。正是使用這種Cookie,服務(wù)器可以訪問(wèn)存儲(chǔ)在服務(wù)器上的屬于客戶程序的信息。
注意:會(huì)話狀態(tài)僅在支持cookie的瀏覽器中保留,如果客戶關(guān)閉了瀏覽器中的Cookie選項(xiàng),Session也就不能發(fā)揮作用了。
在ASP.NET中使用Session變量應(yīng)該注意:
(1).Session變量不用聲明就可以使用
(2).Session變量可以在Web應(yīng)用程序的多個(gè)程序之間傳送數(shù)據(jù)、但是跨越網(wǎng)站和Web應(yīng)用程序則Session變量失效
(3).為了防止服務(wù)器崩潰,應(yīng)避免使用Session變量對(duì)象。尤其是包含大量數(shù)據(jù)的數(shù)據(jù)庫(kù)對(duì)象,很容易使服務(wù)器崩潰
Session對(duì)象是HttpSessionState類的一個(gè)實(shí)例,它有以下四個(gè)常用的屬性
二、Session對(duì)象的屬性
(1).SessionID
(2).Timeout
(3).Count
(4).IsCookieless
1.SessionID屬性
SessionID屬性返回用戶的會(huì)話標(biāo)識(shí)
在用戶第一次訪問(wèn)網(wǎng)頁(yè)創(chuàng)建會(huì)話時(shí),服務(wù)器會(huì)產(chǎn)生一個(gè)相應(yīng)的Session對(duì)象,該Session對(duì)象具有與其他會(huì)話不同的標(biāo)識(shí)。該標(biāo)識(shí)就是Session對(duì)象的SessionID屬性。會(huì)話標(biāo)識(shí)以長(zhǎng)整數(shù)類型返回。
在客戶端,瀏覽器會(huì)將本次會(huì)話的SessionID值存入到本地的Cookie中,當(dāng)再次向服務(wù)器提出頁(yè)面請(qǐng)求時(shí),該SessionID值將作為Cookie信息傳送給服務(wù)器,服務(wù)器就可以根據(jù)該值找到此次會(huì)話以前在服務(wù)器上存儲(chǔ)的信息。當(dāng)重新開(kāi)啟一個(gè)頁(yè)面的時(shí)候,該值都會(huì)變化,而且永遠(yuǎn)不會(huì)重復(fù)。
實(shí)際上當(dāng)不希望依賴于cookie時(shí),可以將 webconfig 文件中的sessionState標(biāo)簽對(duì)應(yīng)的cookieless的值改"true" ,此時(shí)sessionid被附加于url中
2.Timeout屬性
Timeout屬性設(shè)置應(yīng)用程序會(huì)話狀態(tài)的超時(shí)時(shí)限,以分鐘為單位。
每一個(gè)與Web服務(wù)器建立連接的客戶端都擁有獨(dú)立的會(huì)話進(jìn)程,Web服務(wù)器管理這些進(jìn)程時(shí)需要占用一定的系統(tǒng)資源。在現(xiàn)實(shí)生活中,有些用戶在瀏覽網(wǎng)頁(yè)的過(guò)程中,可能要去處理其他事件而沒(méi)有關(guān)閉與服務(wù)器的連接。在這種情況下,如果服務(wù)器一直在管理與此相關(guān)的會(huì)話進(jìn)程,就會(huì)造成系統(tǒng)資源的浪費(fèi)。因此,當(dāng)用戶聯(lián)機(jī)后,在一段時(shí)間內(nèi)沒(méi)有刷新或請(qǐng)求網(wǎng)頁(yè),就可以考慮結(jié)束會(huì)話進(jìn)程。
若要設(shè)置在會(huì)話狀態(tài)提供程序終止會(huì)話之前各請(qǐng)求之間所允許的超時(shí)期限,設(shè)置Session對(duì)象的Timeout屬性即可。默認(rèn)值為20min。Timeout屬性以分鐘為單位為該應(yīng)用程序的Session對(duì)象指定超時(shí)時(shí)限。如果用戶在該超時(shí)時(shí)限之內(nèi)不刷新網(wǎng)頁(yè),則該會(huì)話將終止。設(shè)置Timeout屬性的語(yǔ)法如下:
Session.Timeout = nMinutes;
參數(shù)nMinutes:指定會(huì)話空閑多少分鐘后服務(wù)器自動(dòng)終止該會(huì)話。默認(rèn)值為20。
下面的語(yǔ)句將設(shè)置Session的過(guò)期時(shí)間為30min。
Session.Timeout = 30;
3.Count屬性
Count屬性設(shè)置Session對(duì)象包含的所有變量個(gè)數(shù)的總和。
提示:
除了內(nèi)置的屬性外,Session對(duì)象也可以像Application對(duì)象一樣設(shè)置并使用自定義屬性,這些自定義的Session對(duì)象屬性實(shí)際上就是上線用戶的私有變量。因此可以利用Session對(duì)象的變量在ASP.NET文件之間傳送輸值、字符串、數(shù)組和對(duì)象。
1: Response.Write(Session.SessionID);//隨機(jī)分配一個(gè)SessionID,每次重新打開(kāi)都不一樣如:4w5noyiwpnh0ztm0cymzlo1e
2: Response.Write(Session.Timeout);//默認(rèn)20分鐘
3: Response.Write(Session.Count);//設(shè)置Session對(duì)象包含的所有變量個(gè)數(shù)的總和。
【免責(zé)聲明】本文部分系轉(zhuǎn)載,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)?jiān)?0日內(nèi)與聯(lián)系我們,我們會(huì)予以更改或刪除相關(guān)文章,以保證您的權(quán)益!