2009-07-16 9 views
0

Ich setze Cookies basierend auf den Verweis-Links und sie alle beginnen mit den gleichen Buchstaben, sagen wir "Google", aber sie enden mit _xxx, _yyy, _zzz oder was auch immer die Referenz ist.C#, bekomme Cookies mit verschiedenen Namen

Jetzt, wenn ich versuche, die Cookies später zu bekommen, habe ich das Problem, dass ich nicht für alle verschiedenen Cookies überprüfen möchte, möchte ich nach allen Cookies suchen, die mit "google" beginnen und basieren Darauf werde ich ein Skript starten, das mit der Verarbeitung fortfährt.

if (Request.Cookies("google")) 
{ 
    run other stuff 
} 

Irgendeine Idee, wie ich StartWith oder etwas dazu hinzufügen kann? Ich bin ein Neuling, also noch nicht wirklich in C#.

Vielen Dank im Voraus,

Pat

Antwort

2

Sie haben alle Cookies überprüfen, ob Sie diejenigen mit einem bestimmten Suffix finden wollen (Randolpho Antwort funktioniert).

Es ist keine besonders gute Idee, es so zu machen. Das Problem ist, dass je mehr Cookies Sie erstellen, desto mehr Overhead Sie auf den Server und die Verbindung setzen. Nehmen wir an, Sie haben 10 Cookies: google_aaa, google_bbb, usw. Jede Anfrage sendet alle 10 Cookies an Ihren Server (dies beinhaltet Anfragen für Bilder, CSS, etc.)

Sie sind besser dran mit einem einzigen Cookie, die eine Art ist der Schlüssel zum auf dem Server gespeicherten Informationen alle etwas wie folgt aus:..

var cookie = Cookies["google"]; 
if(cookie!=null) 
{ 
    // cookie.Value is a unique key for this user. Lookup this 
    // key in your database or other store to find out the 
    // information about this user. 
} 
+1

Ich stimme zu. Meine Antwort bietet eine Lösung für das unmittelbare Problem, aber wahrscheinlich sollte ein besserer Weg gesucht werden. – Randolpho

3

Nun .. HttpRequest.Cookies ist eine Sammlung So LINQ:

var qry = from cookieName in Request.Cookies.Keys 
      where cookieName.StartsWith("google") 
      select cookieName; 

foreach(var item in qry) 
{ 
    // get the cookie and deal with it. 
    var cookie = Request.Cookies[item]; 
} 

Bottom lin e: Sie können nicht davon abkommen, über die gesamte Cookie-Sammlung zu iterieren. Aber Sie können es einfach mit LINQ tun.

0

Wenn Sie möchten, verwenden Lambda-Ausdruck, auf diese Weise

var cookie = Request.Cookies.AllKeys.FirstOrDefault(s => s.Contains("yourName")); 

Hope this Hilfe!

Verwandte Themen