2009-12-14 15 views
5

Im auf einem Web-Projekt arbeiten in ASP .NET MVC 2.ASPXAUTH Cookie wird nicht gespeichert werden

In diesem Projekt speichern wir einige Informationen innerhalb eines ecripted Cookie (das ASPXAUTH Cookie), um die Notwendigkeit zu vermeiden, die DB abzufragen für jede Anfrage.

Die Sache ist der Code für diesen Teil hat plötzlich aufgehört zu arbeiten.

Ich überprüfte die Änderungen, die an dem Quellcodeverwaltungsserver für alles vorgenommen wurden, das es verursacht, ich fand nichts. Ich bin sogar zu einer bekannten Arbeitskopie zurückgekehrt (arbeite an einem anderen PC, dem gleichen Code usw.), aber nach dem Debuggen scheint es, dass der .ASPXAUTH-Cookie nicht mehr gespeichert wird. Stattdessen wird der ASP.NET_SessionId-Cookie gesetzt ... (was vorher nicht war)

Ich habe die Datei web.config geändert, um den sessionState zu deaktivieren. Dadurch wurde das Setzen des ASP.NET_SessionId-Cookies verhindert, das Authentifizierungs-Cookie wird jedoch immer noch nicht gespeichert.

Ich habe vor kurzem einige Microsoft Windows XP Updates installiert, aber auch die andere Person (deren PC die Anwendung einwandfrei ausführt).

Nach dem googlen wurde auf ein Problem mit dem Ablaufdatum des Cookies hingewiesen. Ether cus der PC hatte nicht die richtige Zeit/Datum (dies war nicht der Fall) und andere cus des Cookie-Ablaufdatums falsch gesetzt. (Ich überprüfte und es wird richtig eingestellt) ...

Das Problem besteht weiterhin mit anderen Browsern neben dem einen (Chrome) habe ich es mit IE6 versucht.

Irgendwelche Ideen, warum das passiert?

Ich werde fortsetzen, alle hilfreiche Informationen zu veröffentlichen, die ich finden kann.

Vielen Dank im Voraus.

Antwort

8

Dies könnte sein, dass Ihr Cookie zu groß wurde. Ich bin auf dasselbe Problem gestoßen. Wenn Ihr Cookie zu groß wird, wird es einfach nicht funktionieren, je nach Browser natürlich

MSDN

Cookies auf 4096 Bytes in der Regel begrenzt sind und Sie können mehr als 20 Cookies nicht pro Standort speichern. Wenn Sie ein einzelnes Cookie mit Unterschlüsseln verwenden, verwenden Sie weniger dieser 20 Cookies, die Ihrer Site zugewiesen sind. Darüber hinaus benötigt ein einzelnes Cookie für den Overhead (Ablaufinformationen usw.) plus die Länge des Werts, den Sie darin speichern, etwa 50 Zeichen, wobei alles auf die Grenze von 4096 Byte angerechnet wird. Wenn Sie fünf Unterschlüssel anstelle von fünf separaten Cookies speichern, sparen Sie den Overhead der einzelnen Cookies und können ca. 200 Byte einsparen.

What is the maximum size of a web browser's cookie's key?

what happens when cookies file exceeds maximum size?

+0

Sie haben es genagelt, es ist definitiv ein Größenproblem. Danke vielmals. :] –

0

Eine einfache Möglichkeit, Ihre Cookies Größe zu debuggen zu überprüfen ist, und führen Sie den folgenden Code

int cookieSize = System.Text.UTF8Encoding.UTF8.GetByteCount(faCookie.Values.ToString()); 

Wenn diese über die Grenze ist, dann werden Sie Probleme stoßen werden.

Verwandte Themen