2010-08-04 2 views
5

En pageload, si vous Response.Cookies.Add (..., immédiatement dans la ligne suivante, vous pouvez accéder à ce cookie par l'intermédiaire Request.Cookies (...Pourquoi le cookie est-il disponible dans la demande immédiatement après le paramétrage à l'aide de la réponse?

Je sais que sous les couvertures, le cookie est ajouté à Request.Cookies par .net, mais la demande d'origine n'a jamais eu ce cookie

Si ce que je dis est correct, pourquoi est-ce de cette façon? Le cookie ne devrait pas être disponible dans la demande suivante? ne devrait pas l'accès immédiat à Request.Cookies (... nul

Répondre

6

Vous avez raison, ASP.NET ne fait que dans les coulisses:

Après avoir ajouté un cookie en utilisant le HttpResponse.Cookies collection, le cookie est immédiatement disponible dans la collection HttpRequest.Cookies, même si la réponse n'a pas été envoyé à le client.

- HttpRequest.Cookies page sur MSDN

Pourquoi est-il comme ça? À première vue, c'est parce que c'est ainsi que les développeurs s'attendent à ce que cela fonctionne.

+0

En remarque, il s'agit d'une plainte plutôt courante à propos de PHP ... que l'utilisation de 'setcookie' n'ajoute pas ce cookie au '$ _COOKIE' global. – Powerlord

+1

En fait, cela m'a rendu fou. J'avais besoin d'expirer un cookie et d'ajouter un nouveau cookie mais ce comportement signifiait que j'expirais non seulement le vieux cookie mais aussi le nouveau. Et non, je ne pense pas que ce soit un commentaire juste pour suggérer aux développeurs de s'attendre à ce que ça fonctionne comme ça. Je suis un développeur et j'essaie d'éviter les effets secondaires quand j'écris du code. Mais oui, le lien vers la documentation était inestimable, merci. –

Questions connexes