Hi Kevin,
I believe you may be running into an issue with your format for your Cookie
values. A little background is in order.
Cookies are included in the header portion of an HTTP message, both Request
and Response. An HTTP message is pure text. The headers are lines of text
that appear before the body of the HTTP message, which in the case of a web
site or web page, is generally a container for an HTML document (although it
can also be a container for binary data such as images, etc). The text is
parsed on both ends to build the Cookies objects on the server and client.
There can be multiple cookies in an HTTP message, and each cookie may
contain multiple attributes. The Cookie header consists of one of several
different implementations, such as "set-cookie:", "cookie:", "Set-Cookie2:",
or "Cookie2:", depending upon whether the cookies are coming from server or
client, and what version is being used. This is followed by 0 or more
comma-delimited cookies.
Each cookie consists of 0 or more name=value attributes, delimited by
semi-colons. Example:
From the server:
Set-Cookie2: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"
From the client:
Cookie: $Version="1"; Customer="WILE_E_COYOTE"; $Path="/acme"
These are examples of Cookie headers with single cookies in them.
As you have probably figured out, your cookie *content* follows a similar
convention. This could be causing some problem in the interpretation of the
cookie, which results in it being rejected by the parser.
I would recommend using multiple cookies instead.
For more information, see:
http://rfc.dotsrc.org/rfc/rfc2965.html
--
HTH,
Kevin Spencer
Microsoft MVP
Professional Chicken Salad Alchemist
What You Seek Is What You Get.
"Kevin Blount" <ke**********@gmail.comwrote in message
news:11**********************@m79g2000cwm.googlegr oups.com...
I've setup a method (C#) that I can call, passing it a cookie name,
then a name-value pair. The idea is that as I can't append to a cookie,
I read the cookie value, append by name=pair to the end and write it
back... which works fine for adding a single name-value pair on a page.
The problem is, I want/need to add multiple name-values pairs, the
number of which changing between pages (some might have 3, another 8).
In my test scripts I've found a major problem when trying to add even 2
pairs on a single page.
The problem is this:
- the first time I call my method, it checks the current cookie value,
which is say "loggedin=true"
- it then appendsthe name-value pair passed to the method ("name" and
"kevin") as a new string, i.e. "loggedin=true&name=kevin"
- I think write the new string as the value of the cookie and return to
my aspx calling page
the second time I call the method, I check the current cookie value
again (naturally), which I'd expect to be "loggedin=true&name=kevin",
but in fact it's the original value of just "loggedin=true". This means
that when I add the second passed name-value pair (say, "gender" and
"male") the final value of the cookie is "loggedin=true&gender=male".
I say 'final', cause if I check the value of the cookie on my calling
page (i.e. without refreshing or going to another page), the value of
the cookies is STILL the original one, not the one I did with my
Response.Cookies(...) or Response.Cookies.Set(...) or any of the other
properties I've tried.
So, back to my original question: when exactly do cookies get written
to the browser? It seems to me that it's only when the current page is
reloaded or moved away from. Can that really be the case??
Many thanks