Questa mattina ho accidentalmente visto il seguente codice snippet, sono rimasto abbastanza sorpreso perché funziona molto bene.Perché Request.Cookies restituisce una stringa anziché un oggetto HttpCookie nel ciclo foreach?
Non guardare la sua logica per favore, sono solo curioso perché HttpCookieCollection (Request.Cookies in questo caso) restituisce una stringa (nome cookie) invece di un oggetto HttpCookie nel ciclo foreach. È un problema di coerenza perché normalmente otteniamo l'oggetto HttpCookie in questa collezione per indice/nome?
Grazie,
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);
}
}
Grazie, @ Chris: Non chiedo come iterare una collezione dal ciclo for;) –
Ho lo stesso problema, non capisco perché devo usare string insted di HttpCookie nella dichiarazione foreach. qualche indizio? – gonxalo
se si utilizza System.Net.CookieCollection è possibile iterare in questo modo. ma non con HttpCookieCollection, strano comportamento penso. statico pubblico HttpCookieCollection CookieCollectionToHttpCookieCollection (CookieCollection cookieCollection) { HttpCookieCollection httpCookieCollection = new HttpCookieCollection(); foreach (Cookie in cookieCollection) { httpCookieCollection.Add (CookieToHttpCookie (cookie)); } return httpCookieCollection; } – gonxalo