ASP.NET中Cookie程式設計簡明參考

iDotNetSpace發表於2010-05-31

一   寫入Cookie

  1.   Name   和   Value   屬性由程式設定,預設值都是空引用。

  2.   Domain屬性的預設值為當前URL的域名部分,不管發出這個cookie的頁面在哪個目錄下的。

  例如,http://www.kent.com/application1/login.aspx   頁面中發出一個cookie,Domain屬性預設就是http://www.kent.com/   ,可以由程式設定此屬性為需要的值。

  3.   Path屬性的預設值是根目錄,即   ”/”   ,不管發出這個cookie的頁面在哪個目錄下的。可以由程式設定為一定的路徑來進一步限制此cookie的作用範圍。

  4.   Expires   屬性,這個屬性設定此Cookie   的過期日期和時間。如果沒有設定   Cookie   的有效期(預設設定),也可以建立   Cookie,但它不會儲存到使用者的硬碟上,而是會成為使用者會話資訊的一部分,關閉瀏覽器或會話超時這個Cookie即會消失,這種Cookie稱作非永 久性的   Cookie。存放SessionID的Cookie就是這樣的一種Cookie,它不存放在硬碟上,只存在記憶體之中。

  5.   將要發出的Cookie附加到Response的Cookies屬性中就可以將此Cookie傳送到客戶 端:Reponse.Cookies.Add(Cookie)

  6.   Domain屬性+Path屬性   相同的所有Cookie   在客戶端都存在一個檔案中,Cookie之間以”*”分割。每個Cookie的第一行是   Cookie   的名稱,第二行是值,第三行是Domain屬性+Path屬性組成的一個字串,指示此Cookie的作用域,其餘各行則包含   Cookie   的日常處理資訊,例如過期日期和時間。Cookie   中還有一個簡單的校驗和,如果更改   Cookie   名稱或值的長度,瀏覽器就會檢測到修改並刪除該 Cookie

  二   讀取Cookie

  1.   Request.Cookies   屬性中包含了客戶端傳送到伺服器的所有Cookie的集合,只有在請求URL的作用範圍內的Cookie才會被瀏覽器連同Http請求一起傳送到伺服器。

  2.   Name   和   Value   屬性和子鍵的值很容易讀到。

  3.   Domain   和   Path   屬性   是讀不到的,讀Domain屬性永遠是””,讀Path屬性永遠是   ”/”   。本來這些屬性的用途很有限。如果您的頁面與   Cookie   不在相同的域,您根本就不會在頁面的位置接收到該   Cookie。

  4.   也無法讀取Cookie   的過期日期和時間。事實上,當瀏覽器向伺服器傳送   Cookie   資訊時,瀏覽器並未將過期資訊包括在內。您可以讀取   Expires   屬性,但總是返回為零的日期/時間值。Expires   屬性的主要作用是幫助瀏覽器執行有關   Cookie   儲存的日常管理。從伺服器的角度來看,Cookie   要麼存在要麼不存在,所以對伺服器而言,有效期並不是有用的資訊。

  所以,瀏覽器在傳送   Cookie   時並不提供此資訊。如果您需要   Cookie   的過期日期,就必須重新設定。

  三   修改和刪除   Cookie

  1.   其實你不能直接修改一個Cookie,是建立一個同名的   Cookie,並把該   Cookie   傳送到瀏覽器,覆蓋客戶機上舊的   Cookie。

  2.   同樣您無法直接將其刪除一個Cookie,可以通過修改一個Cookie達到讓瀏覽器幫你刪除Cookie的目的,修改Cookie的有效期為過去的某個 時間,當瀏覽器檢查   Cookie   的有效期時,就會刪除這個已過期的   Cookie。

  四   Cookie同Session的關係

  1.   asp.net中Session可以採用cookie   和cookieless兩種方法,cookieless方式是將SessionID放在URL中在客戶端和服務端中來回傳遞,不需要用到cookie,在 這裡不討論這個方式。

  2.   在asp.net中客戶第一次請求一個URL,伺服器給這個客戶生成一個SessionID,並以非永久性的   Cookie傳送到客戶端。

  3.   非永久性的   Cookie只有在瀏覽器關閉後這些Cookie才隨之消失,Session的超時判斷是這樣的過程:

  3.1   第一次客戶端訪問伺服器,會得到一個SessionID,以非永久性的   Cookie傳送到客戶端。

  3.2   在這個瀏覽器關閉之前訪問這個URL,瀏覽器都會把這個SessionID傳送到服務端,服務端根據SessionID來維持對應此客戶的服務端的各種狀 態(就是Session中儲存的各種值),在web應用程式中可以對這些Session進行操作。

  3.3   服務端維護此SessionID的過期時間,IIS中可以設定Session的超時時間。每次請求都將導致服務端將此SessioID的過期時間延長一個 設定的超時時間。

  3.4   當服務端發現某個SessionID已經過時,即某個客戶已經在設定的超時時間內沒有再次訪問此站點,即將此SessionID,連同跟此 SessionID相關的所有Session變數刪除。

  3.5   客戶端的瀏覽器未關閉前,並不知道服務端已經將這個SessionID刪除,客戶端依舊傳送此SessionID的cookie到服務端,只是此時的服務 端已經不認識此SessionID了,會將此使用者當做新使用者,再次分配一個新的SessionID。

免費開源的asp.net購物系統  下載地址:http://www.csdnit.com/showtopic-2157.html    演示地址:http://www.56fuyuan.com/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-664088/,如需轉載,請註明出處,否則將追究法律責任。

相關文章