Frage

Heute Morgen habe ich aus Versehen den folgenden Ausschnitt Code sah, war ich ziemlich überrascht, weil es sehr gut funktionieren.

Schauen Sie nicht auf seiner Logik bitte, ich bin nur neugierig, warum die Httpcookiecollection (Request.Cookies in diesem Fall) eine Zeichenfolge (Cookie-Namen) zurückzukehren anstelle einem Http Objekt in foreach-Schleife. Ist es eine Konsistenz Problem, weil wir normalerweise Http Objekt in dieser Sammlung von Index / Namen?

Danke,

foreach (string cookieKey in System.Web.HttpContext.Current.Request.Cookies)
{
    HttpCookie tmpCookie = System.Web.HttpContext.Current.Request.Cookies[cookieKey];
    if (tmpCookie != null && tmpCookie["RecentlyVisited"] != null)
    {
       cookie.Add(tmpCookie);
    }
}
War es hilfreich?

Lösung

Es macht mehr Sinn, durch die Tasten durch eine Sammlung iterieren. Auf diese Weise haben Sie Zugriff auf sowohl den Tasten und den Wert leicht zugänglich machen können durch System.Web.HttpContext.Current.Request.Cookies[cookieKey]; Aufruf

Andere Tipps

Sie können durch den Index durch Ihre Cookies Schleife wollen:

HttpCookieCollection MyCookieColl;
HttpCookie MyCookie;

MyCookieColl = Request.Cookies;

// Capture all cookie names into a string array.
String[] arr1 = MyCookieColl.AllKeys;

// Grab individual cookie objects by cookie name.
for (int i = 0; i < arr1.Length; i++) 
{
   MyCookie = MyCookieColl[arr1[i]];
   Debug.WriteLine("Cookie: " + MyCookie.Name);
   Debug.WriteLine("Expires: " + MyCookie.Expires);
   Debug.WriteLine("Secure:" + MyCookie.Secure);
}

Da Sie können durch ihren numerischen Index Cookies bekommen und es ist tatsächlich möglich, mehrere Cookies mit dem gleichen Namen zu scannen, ohne auf einen Cookie oder so etwas kopieren zu müssen.

Das sollte es tun:

var cookieName = "yourcookie";
var matches = cookies.AllKeys
    .Select((name, i) => new {name, i})
    .Where(x => x.name == cookieName)
    .Select(x => DoSomethingWithEachMatch(cookies[x.i]));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top