Der Grund, warum dies passiert ist, weil die NameObjectCollectionBase
Art, dass Request.Cookies
von aufzählt über die Tasten der Sammlung ableitet und nicht über die Werte. Also, wenn Sie die Request.Cookies
Sammlung aufzählen über die Schlüssel bekommen:
public virtual IEnumerator GetEnumerator()
{
return new NameObjectKeysEnumerator(this);
}
Dies bedeutet, dass die folgende funktioniert:
string[] keys = Request.Cookies.Cast<string>().ToArray();
Ich denke, man könnte die folgende versuchen, die hässlich angesehen werden könnten, sondern wird Arbeit:
List<HttpCookie> lstCookies = Request.Cookies.Keys.Cast<string>()
.Select(x => Request.Cookies[x]).ToList();
UPDATE:
Wie bereits in den Kommentaren von @ Jon Benedicto und in his answer mit der AllKeys
Eigenschaft mehr optimal ist, da es eine Besetzung rettet:
List<HttpCookie> lstCookies = Request.Cookies.AllKeys
.Select(x => Request.Cookies[x]).ToList();
Aber dann verlieren Sie den Schlüssel -> Wert Verbindung :) – Snake
@Snake, Ich stimme Ihnen zu, dass dies nicht optimal vom Standpunkt der Leistung aus, da es die Sammlung mehrmals aufzählt, aber wenn Sie ein paar Elemente haben, ist es vielleicht nicht dramatisch. –
Mit dem AllKeys-Mitglied von HttpCookieCollection wird eine Besetzung gespeichert. Siehe meine Antwort für den Code. –