11.4 Cookies verwenden
 
ASP.NET verwaltet Cookies in Objekten vom Typ HttpCookieCollection. Request.Cookies liefert ein solches Objekt für diejenigen Cookies, die der Server vom Browser empfangen hat. Response.Cookies enthält diejenigen Cookies, die der Server zum Browser schicken wird. Für das einzelne Cookie steht die Klasse HttpCookie zur Verfügung. Hier wieder eine kleine Demonstration. cookie01.aspx setzt zwei Cookies.
<!-- cookie01.aspx -->
<%@ Page Language="VB" Debug="True" Strict="True" %>
<script runat="server">
Sub Page_Load (ByVal Sender As Object, _
ByVal E As EventArgs)
' Erstes Cookie
Dim keks1 As New HttpCookie ("Krümel 1", "abcdefg")
Response.Cookies.Add (keks1)
' Cookie persistent speichern
Dim keks As HttpCookie = new HttpCookie _
("Zuletzt besucht am")
keks.Value = CStr(DateTime.Now())
Dim dt As DateTime = DateTime.Now()
' 24 Stunden lang bleibt das Cookie gespeichert
Dim ts As New TimeSpan(24,0,0)
keks.Expires = dt.Add(ts)
Response.Cookies.Add(keks)
End Sub
</script>
<html><head>
<title>Cookie-Demo, Cookies setzen</title></head>
<body><h3>Cookie-Demo, Cookies setzen</h3>
<p>Diese Seite setzt zwei Cookies</p>
<a href="cookie02.aspx">Zur Seite, die die
Cookies wieder ausliest.</a>
</body></html>
Wenn Sie für die Eigenschaft Expires keinen Wert angeben, wird das Cookie gelöscht, sobald der Browser geschlossen wird. Wenn Sie eine Zeit in der Zukunft angeben, bleibt das Cookie persistent gespeichert, bis sein Verfallsdatum erreicht ist. cookie02.aspx liest die vorhandenen Cookies wieder aus (siehe Abbildung 11.16).
<!-- cookie02.aspx -->
<%@ Page Language="VB" Debug="True" Strict="True" %>
<script runat="server">
Sub Page_Load (ByVal Sender As Object, _
ByVal E As EventArgs)
Dim keksColl As HttpCookieCollection
Dim i As Integer
Dim sb As New StringBuilder()
keksColl = Request.Cookies
sb.Append _
("<b>Cookie-Name = Cookie-Wert, Verfallsdatum</b><br>")
For i = 0 To keksColl.Count – 1
sb.Append (keksColl(i).Name)
sb.Append (" = ")
sb.Append (keksColl(i).Value)
sb.Append (", ")
sb.Append (keksColl(i).Expires.toString())
sb.Append ("<br>")
Next
ausgabe.innerHTML = sb.toString()
End Sub
</script>
<html><head><title>Cookie-Demo, Lesen</title></head>
<body><h3>Cookie-Demo, Lesen</h3>
<p>Diese Seite liest die vorhandenen Cookies.</p>
<p runat="server" id="ausgabe" />
</body></html>
Wenn Sie den Browser schließen, wieder öffnen und erneut cookie02.aspx aufrufen, wird nur noch das persistent gespeicherte Zuletzt besucht am-Cookie angezeigt.
Das Verfallsdatum zeigt auch bei dem persistent gespeicherten Zuletzt besucht am-Cookie das Datum 01.01.0001 00:00:00 und nicht das korrekte Verfallsdatum an. Ich weiß nicht, warum hier nicht das korrekte Verfallsdatum angezeigt wird.
 Hier klicken, um das Bild zu Vergrößern
Abbildung 11.16 Cookies werden in einer HttpCookieCollection gespeichert
Sie können einem Cookie auch mehrere Schlüssel-Wert-Paare zuweisen. Dafür verwenden Sie die Eigenschaft Values im Gegensatz zum einzelnen Wert von Value. Wenn ein Cookie diese Art der Datenspeicherung nutzt, liefert die Eigenschaft HasKeys True zurück.
| Name
|
Typ
|
Beschreibung
|
| Domain
|
String
|
Name der Domäne, der das Cookie zugeordnet ist. Standardwert ist die aktuelle Domäne.
|
| Expires
|
DateTime
|
Verfallsdatum, bis zu dem das Cookie gültig ist
|
| HasKeys
|
Boolean
|
True, wenn das Cookie über Unterschlüssel verfügt. Siehe auch Values.
|
| Item(String)
|
String
|
Wert desjenigen Cookies, dessen Schlüssel im String übergeben wird. Default-Eigenschaft
|
| Name
|
String
|
Name des Cookies
|
| Path
|
String
|
Der virtuelle Pfad, der die Domain ergänzt
|
| Secure
|
Boolean
|
Legt fest, ob ein Cookie ausschließlich über HTTPS übertragen werden soll
|
| Value
|
String
|
Wert des Cookies
|
| Values
|
NameValueCollection
|
Auflistung von Schlüssel-Wert-Paaren. HasKeys ist True, wenn hier Werte gespeichert sind.
|
Tabelle 11.3 Eigenschaften der Klasse HttpCookie
| Eigenschaften
|
| AllKeys
|
String()
|
Ein Array mit allen Cookienamen
|
| Count
|
Integer
|
Anzahl enthaltener Cookies
|
| Item(Integer) oder Item(String)
|
HttpCookie
|
Das einzelne Cookie über den numerischen Index oder über den Namen aufrufen
|
| Keys
|
NameObjectCollectionBase.KeysCollection
|
Eine Collection mit allen Cookie-Schlüsseln
|
| Methoden
|
| Add(HttpCookie)
|
Fügt ein Cookie hinzu
|
| Clear()
|
Entfernt alle Cookies aus der Auflistung
|
| CopyTo(Array, Integer)
|
Kopiert die Cookies in das Array ab der Integer-Position
|
| GetKey(Integer)
|
Liefert den Schlüssel des Cookies, dessen Indexposition genannt wird
|
| Remove(String)
|
Entfernt das Cookie, dessen Name genannt wird
|
| Set (HttpCookie)
|
Aktualisiert ein Cookie in der Auflistung
|
Tabelle 11.4 Mitglieder der Klasse HttpCookieCollection
|