溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

session與cookies在.net中有什么不同的地方

發(fā)布時(shí)間:2020-12-25 16:34:25 來(lái)源:億速云 閱讀:112 作者:Leah 欄目:開發(fā)技術(shù)

session與cookies在.net中有什么不同的地方?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

先介紹一下比較簡(jiǎn)單的使用方法
給COOKIES賦值

復(fù)制代碼 代碼如下:


Response.Cookies["uid"].Value = "20";
Response.Cookies["LoginCode"].Value = "58469";


以上就是分別對(duì)兩個(gè)COOKIES變量賦了兩個(gè)不同的傳,那么在使用COOKIES時(shí),我們?cè)鯓觼?lái)控制COOKIES的有效期呢,看下面: 

復(fù)制代碼 代碼如下:


Response.Cookies["uid"].Expires = DateTime.Now.AddDays(1);
Response.Cookies["LoginCode"].Expires = DateTime.Now.AddDays(1);


上面是分別對(duì)兩個(gè)變量的有效期的1天,當(dāng)然也是幾小時(shí),方法如下:

復(fù)制代碼 代碼如下:


Response.Cookies["LoginCode"].Expires =DateTime.Now.AddHours(1);


這是有效期為1小時(shí),同樣的方法可以類推成幾分鐘,幾秒等等。
那我們?nèi)绾潍@得這些COOKIES的值呢?這里要注意一點(diǎn),在COOKIES沒(méi)有被賦值時(shí),你要調(diào)用就會(huì)出錯(cuò),所以我們一般在調(diào)用之前會(huì)先判斷一下,此COOKIES是否存在,方法:

復(fù)制代碼 代碼如下:


if (Request.Cookies["uid"] != null)
{
string ruid = Request.Cookies["uid"].Value;
}


在.NET里獨(dú)有的賦值方法

復(fù)制代碼 代碼如下:


System.Web.HttpCookie user_cookies_id=new HttpCookie("uid");
user_cookies_id.Value="20";
user_cookies_id.Expires=DateTime.Now.AddDays(1);
Response.AppendCookie(user_cookies_id);
--------------------------------
HttpCooKie acookie=new Httpcookie("lastvisitcounter");
acookie.value=lastvisitcounter.ToString();
acookie.Expires=DateTime.MaxValue;
Response.Cookie.Add(acookie);
if(Request.Cookies["lastvisitcounter"]==null)
{
textbox1.text="1";
}
else
{
HttpCookie acookie=request.Cookies["lastvisitcounter"];
textbox1.text=server.HtmiEncode(acookie.value);
}


session的使用
session("username")="aa" 寫入
username=session("username") 讀取
Session即會(huì)話,是指一個(gè)用戶在一段時(shí)間內(nèi)對(duì)某一個(gè)站點(diǎn)的一次訪問(wèn)。
Session對(duì)象在.NET中對(duì)應(yīng)HttpSessionState類,表示“會(huì)話狀態(tài)”,可以保存與當(dāng)前用戶會(huì)話相關(guān)的信息。
Session對(duì)象用于存儲(chǔ)從一個(gè)用戶開始訪問(wèn)某個(gè)特定的aspx的頁(yè)面起,到用戶離開為止,特定的用戶會(huì)話所需要的信息。用戶在應(yīng)用程序的頁(yè)面切換時(shí),Session對(duì)象的變量不會(huì)被清除。

對(duì)于一個(gè)Web應(yīng)用程序而言,所有用戶訪問(wèn)到的Application對(duì)象的內(nèi)容是完全一樣的;而不同用戶會(huì)話訪問(wèn)到的Session對(duì)象的內(nèi)容則各不相同。

Session可以保存變量,該變量只能供一個(gè)用戶使用,也就是說(shuō),每一個(gè)網(wǎng)頁(yè)瀏覽者都有自己的Session對(duì)象變量,即Session對(duì)象具有唯一性。
(1)將新的項(xiàng)添加到會(huì)話狀態(tài)中
語(yǔ)法格式為:
Session ("鍵名") = 值 或者 Session.Add( "鍵名" , 值)
(2)按名稱獲取會(huì)話狀態(tài)中的值
語(yǔ)法格式為: 變量 = Session ("鍵名") 或者 變量 = Session.Item("鍵名")
(3)刪除會(huì)話狀態(tài)集合中的項(xiàng)
語(yǔ)法格式為: Session.Remove("鍵名")
(4)清除會(huì)話狀態(tài)中的所有值
語(yǔ)法格式為: Session.RemoveAll() 或者 Session.Clear()
(5)取消當(dāng)前會(huì)話
語(yǔ)法格式為: Session.Abandon()
(6)設(shè)置會(huì)話狀態(tài)的超時(shí)期限,以分鐘為單位。
語(yǔ)法格式為: Session.TimeOut = 數(shù)值
Global.asax 文件中有2個(gè)事件應(yīng)用于Session對(duì)象
事件名稱 說(shuō)明
Session_Start 在會(huì)話啟動(dòng)時(shí)激發(fā)
Session_End 在會(huì)話結(jié)束時(shí)激發(fā)

.net 中的session與cookies

Session又稱為會(huì)話狀態(tài),是Web系統(tǒng)中最常用的狀態(tài),用于維護(hù)和當(dāng)前瀏覽器實(shí)例相關(guān)的一些信息。HTTP 是一種無(wú)狀態(tài)協(xié)議。這意味著 Web 服務(wù)器會(huì)將針對(duì)頁(yè)面的每個(gè) HTTP 請(qǐng)求作為獨(dú)立的請(qǐng)求進(jìn)行處理。服務(wù)器不會(huì)保留以前的請(qǐng)求過(guò)程中所使用的變量值的任何信息。ASP.NET 會(huì)話狀態(tài)將來(lái)自限定時(shí)間范圍內(nèi)的同一瀏覽器的請(qǐng)求標(biāo)識(shí)為一個(gè)會(huì)話,當(dāng)每個(gè)用戶首次與這臺(tái)WWW服務(wù)器建立連接時(shí),他就與這個(gè)服務(wù)器建立了一個(gè)Session,同時(shí)服務(wù)器會(huì)自動(dòng)為其分配一個(gè)SessionID,用以標(biāo)識(shí)這個(gè)用戶的唯一身份。

舉個(gè)例子來(lái)說(shuō),我們可以把已登錄用戶的用戶名放在Session中,這樣就能通過(guò)判斷Session中的某個(gè)Key來(lái)判斷用戶是否登錄,如果登錄的話用戶名又是多少。

Cookies
cookie 是一小段文本信息,伴隨用戶請(qǐng)求,在web服務(wù)器和瀏覽器之間傳遞。用戶每次訪問(wèn)站點(diǎn)的時(shí)候,
web應(yīng)用程序都可以讀取cookie包含的信息。

假設(shè)在用戶請(qǐng)求您的網(wǎng)站的某個(gè)頁(yè)面時(shí),您的應(yīng)用程序不僅是返回請(qǐng)求的頁(yè)面。同時(shí)也返回一個(gè)包含日期
和時(shí)間的cookie。用戶的瀏覽器在獲得頁(yè)面的同時(shí)也獲得了cookie.并且cookie保存在客戶端的cookie文件夾中。

指定cookie的名字和要保存的值??梢詣?chuàng)建多個(gè),但每個(gè)cookie的名字必須唯一,以便日后取值時(shí)識(shí)別。(cookie是按名字儲(chǔ)存的,要?jiǎng)?chuàng)建兩個(gè)名稱相同的cookie,那么最后那個(gè)cookie將覆蓋前一個(gè)。)同時(shí)可以給cookie指定過(guò)期日期和時(shí)間.cookie是寫入到用戶硬盤上的,然后可能一直都留在磁盤上。因此,指定cookie的過(guò)期日期和時(shí)間。當(dāng)用戶下次訪問(wèn)站點(diǎn)的時(shí)候,瀏覽器會(huì)先檢查您站點(diǎn)的所有cookie,如果某個(gè)cookie已經(jīng)過(guò)期,瀏覽器不會(huì)把這個(gè)cookie隨頁(yè)面請(qǐng)求一起發(fā)送給服務(wù)器,而是刪除。

cookie 和session 的區(qū)別
1、cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上。
2、cookie不是很安全,別人可以分析存放在本地的COOKIE并進(jìn)行COOKIE欺騙
考慮到安全應(yīng)當(dāng)使用session
3、session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上。當(dāng)訪問(wèn)增多,會(huì)比較占用你服務(wù)器的性能
考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用COOKIE
4、單個(gè)cookie在客戶端的限制是3K,就是說(shuō)一個(gè)站點(diǎn)在客戶端存放的COOKIE不能3K。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI