Wie konvertiere ich die Cookies-Auflistung, um eine generische Liste? Leicht
Weiss jemand wie ich das umwandeln kann Request.Cookies
in eine List<HttpCookie>
? Das folgende hat nicht funktioniert, da wirft er eine exception.
List<HttpCookie> lstCookies = new List<HttpCookie>(
Request.Cookies.Cast<HttpCookie>());
Ausnahme: Unable to cast object of type 'System.String' to type 'System.Web.HttpCookie'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Grund, warum dies passiert ist, weil die
NameObjectCollectionBase
Typ, derRequest.Cookies
leitet sich von aufzählt, über die Schlüssel der Sammlung und nicht über die Werte. Also, wenn Sie Sie aufzählen über dieRequest.Cookies
Sammlung bekommen Sie die Tasten:Dies bedeutet, dass die folgenden arbeiten:
Ich denke, man könnte versuchen, die folgende, die vielleicht als hässlich, aber funktioniert:
UPDATE:
Wie bereits von @Jon Benedicto in den Kommentaren und in seine Antwort mit der
AllKeys
Eigenschaft mehr optimal, da es spart Darsteller:return this.BaseGetValues().GetEnumerator();
Wenn Sie wirklich wollen, eine gerade
List<HttpCookie>
ohne Schlüssel->Wert-Verbindung, dann Sie können verwenden, Wählen Sie in LINQ to do it:.Cookies.Cast<HttpCookie>();
versucht zu werfen, die Sammlung von Schlüsseln, um eine Sammlung von cookies. Es ist also normal, dass Sie einen Fehler erhalten 🙂Es ist ein name -> Wert-Sammlung, also der Umwandlung in eine Liste wäre nicht gut.
Ich würde versuchen, die Konvertierung in ein Wörterbuch.
Beispiel:
Da Cookies erbt von NameObjectCollectionBase können Sie GetAllKeys(), und verwenden Sie diese Liste, um alle die Werte und setzen Sie Sie in einem Wörterbuch.
Beispiel:
Die Frage ist vielleicht ein bisschen alt, aber die Antworten hier sind nicht für alle Fälle, denn wie bereits von @C. M. es können mehrere cookies mit dem gleichen Namen.
Also der einfachste Weg ist, um eine Schleife die Auflistung der cookies, die mit einer for-Schleife: