Cookies Count

Discussion in 'ASP .Net' started by rn5a@rediffmail.com, Sep 28, 2007.

  1. Guest

    This is how I am creating & then reading cookies:

    <script runat="server">
    Sub Page_Load(ByVal obj As Object, ByVal ea As EventArgs)
    'create cookies
    Response.Cookies("UserName").Value = "Ron"
    Response.Cookies("UserName").Expires = "12/31/2008"

    Response.Cookies("UserDetails")("FirstName") = "Ronnie"
    Response.Cookies("UserDetails")("LastName") = "Nathan"
    Response.Cookies("UserDetails")("LastVisitedDate") =
    DateTime.Now.ToString("d")
    Response.Cookies("UserDetails")("LastVisitedTime") =
    DateTime.Now.ToString("T")
    Response.Cookies("UserDetails").Expires = "12/31/2008"

    'read cookies count
    Response.Write(Request.Cookies.Count & " cookies created!
    <br>")

    'read cookies
    Response.Write("Full Name : " & Request.Cookies("UserDetails")
    ("FirstName") & " " & Request.Cookies("UserDetails")("LastName") &
    "<br>")

    Response.Write("User Name : " &
    Request.Cookies("UserName").Value & "<br>")

    Response.Write("Last Visit: " & Request.Cookies("UserDetails")
    ("LastVisitedDate") & " at " & Request.Cookies("UserDetails")
    ("LastVisitedTime"))
    End Sub
    </script>

    As such, the cookie gets created successfully. ONLY 1 cookie gets
    created but when I run the above code for the first time i.e. when the
    cookie doesn't exist, Request.Cookies.Count evaluates to 3 & on
    further page refreshes, Request.Cookies.Count evaluates to 5.

    How is Request.Cookies.Count evaluating to 3 & 5 when ONLY 1 cookie
    gets created (in the Temporary Internet Files folder)?

    Thanks
    , Sep 28, 2007
    #1
    1. Advertising

  2. re:
    !> How is Request.Cookies.Count evaluating to 3 & 5

    Request.Cookies.Count doesn't only count the cookies you have explicitly created in the page.
    It also counts the ASP.NET cookie(s).

    re:
    !> when ONLY 1 cookie gets created (in the Temporary Internet Files folder)?
    You're actually creating 5 cookies, and storing them in one cookie file.

    You can easily loop through all the cookies, and verify this.

    Right after your code line which reads :

    Response.Write("Last Visit: " & Request.Cookies("UserDetails")("LastVisitedDate") _
    & " at " & Request.Cookies("UserDetails")("LastVisitedTime"))

    ....place this code :

    Dim output As New System.Text.StringBuilder()
    Dim aCookie As HttpCookie
    Dim i As Integer
    For i = 0 To Request.Cookies.Count - 1
    aCookie = Request.Cookies(i)
    output.Append(("Name = " & aCookie.Name + "<br />"))

    If aCookie.HasKeys Then
    Dim j As Integer
    For j = 0 To aCookie.Values.Count - 1
    Dim subkeyName as string = Server.HtmlEncode(aCookie.Values.AllKeys(j))
    Dim subkeyValue as string = Server.HtmlEncode(aCookie.Values(j))
    output.Append(("Subkey name = " & subkeyName + "<br />"))
    output.Append(("Subkey value = " & subkeyValue + "<br /><br />"))
    Next j
    Else
    output.Append(("Value = " & Server.HtmlEncode(aCookie.Value) + "<br /><br />"))
    End If
    Next i
    Label1.Text = output.ToString()

    ---000---

    Now, create a form in your html and add a label named Label1...

    <html>
    <head runat="server">
    <title>Cookie Example</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    <asp:Label id="Label1" runat="server"></asp:Label>
    </div>
    </form>
    </body>
    </html>

    Now, run your page again.

    You will see *all* the cookies you've created, with their subkey names and values.

    Count them...and notice that the ASP..NET SessionID cookie is also listed.

    You may be able to see cookies created by other applications,
    because you did not restrict the cookies' path to the application
    in which you're creating the cookies, so you'll see *all* the cookies
    which are being created within your default path ( "/" ).



    Juan T. Llibre, asp.net MVP
    asp.net faq : http://asp.net.do/faq/
    foros de asp.net, en español : http://asp.net.do/foros/
    ======================================
    <> wrote in message news:...
    > This is how I am creating & then reading cookies:
    >
    > <script runat="server">
    > Sub Page_Load(ByVal obj As Object, ByVal ea As EventArgs)
    > 'create cookies
    > Response.Cookies("UserName").Value = "Ron"
    > Response.Cookies("UserName").Expires = "12/31/2008"
    >
    > Response.Cookies("UserDetails")("FirstName") = "Ronnie"
    > Response.Cookies("UserDetails")("LastName") = "Nathan"
    > Response.Cookies("UserDetails")("LastVisitedDate") =
    > DateTime.Now.ToString("d")
    > Response.Cookies("UserDetails")("LastVisitedTime") =
    > DateTime.Now.ToString("T")
    > Response.Cookies("UserDetails").Expires = "12/31/2008"
    >
    > 'read cookies count
    > Response.Write(Request.Cookies.Count & " cookies created!
    > <br>")
    >
    > 'read cookies
    > Response.Write("Full Name : " & Request.Cookies("UserDetails")
    > ("FirstName") & " " & Request.Cookies("UserDetails")("LastName") &
    > "<br>")
    >
    > Response.Write("User Name : " &
    > Request.Cookies("UserName").Value & "<br>")
    >
    > Response.Write("Last Visit: " & Request.Cookies("UserDetails")
    > ("LastVisitedDate") & " at " & Request.Cookies("UserDetails")
    > ("LastVisitedTime"))
    > End Sub
    > </script>
    >
    > As such, the cookie gets created successfully. ONLY 1 cookie gets
    > created but when I run the above code for the first time i.e. when the
    > cookie doesn't exist, Request.Cookies.Count evaluates to 3 & on
    > further page refreshes, Request.Cookies.Count evaluates to 5.
    >
    > How is Request.Cookies.Count evaluating to 3 & 5 when ONLY 1 cookie
    > gets created (in the Temporary Internet Files folder)?
    >
    > Thanks
    >
    Juan T. Llibre, Sep 28, 2007
    #2
    1. Advertising

  3. Guest

    On Sep 27, 10:48 pm, "Juan T. Llibre" <>
    wrote:
    > re:
    > !> How is Request.Cookies.Count evaluating to 3 & 5
    >
    > Request.Cookies.Count doesn't only count the cookies you have explicitly created in the page.
    > It also counts the ASP.NET cookie(s).
    >
    > re:
    > !> when ONLY 1 cookie gets created (in the Temporary Internet Files folder)?
    > You're actually creating 5 cookies, and storing them in one cookie file.
    >
    > You can easily loop through all the cookies, and verify this.
    >
    > Right after your code line which reads :
    >
    > Response.Write("Last Visit: " & Request.Cookies("UserDetails")("LastVisitedDate") _
    > & " at " & Request.Cookies("UserDetails")("LastVisitedTime"))
    >
    > ...place this code :
    >
    > Dim output As New System.Text.StringBuilder()
    > Dim aCookie As HttpCookie
    > Dim i As Integer
    > For i = 0 To Request.Cookies.Count - 1
    > aCookie = Request.Cookies(i)
    > output.Append(("Name = " & aCookie.Name + "<br />"))
    >
    > If aCookie.HasKeys Then
    > Dim j As Integer
    > For j = 0 To aCookie.Values.Count - 1
    > Dim subkeyName as string = Server.HtmlEncode(aCookie.Values.AllKeys(j))
    > Dim subkeyValue as string = Server.HtmlEncode(aCookie.Values(j))
    > output.Append(("Subkey name = " & subkeyName + "<br />"))
    > output.Append(("Subkey value = " & subkeyValue + "<br /><br />"))
    > Next j
    > Else
    > output.Append(("Value = " & Server.HtmlEncode(aCookie.Value) + "<br /><br />"))
    > End If
    > Next i
    > Label1.Text = output.ToString()
    >
    > ---000---
    >
    > Now, create a form in your html and add a label named Label1...
    >
    > <html>
    > <head runat="server">
    > <title>Cookie Example</title>
    > </head>
    > <body>
    > <form id="form1" runat="server">
    > <div>
    > <asp:Label id="Label1" runat="server"></asp:Label>
    > </div>
    > </form>
    > </body>
    > </html>
    >
    > Now, run your page again.
    >
    > You will see *all* the cookies you've created, with their subkey names and values.
    >
    > Count them...and notice that the ASP..NET SessionID cookie is also listed.
    >
    > You may be able to see cookies created by other applications,
    > because you did not restrict the cookies' path to the application
    > in which you're creating the cookies, so you'll see *all* the cookies
    > which are being created within your default path ( "/" ).
    >
    > Juan T. Llibre, asp.net MVP
    > asp.net faq :http://asp.net.do/faq/
    > foros de asp.net, en español :http://asp.net.do/foros/
    > ======================================
    >
    >
    >
    > <> wrote in messagenews:...
    > > This is how I am creating & then reading cookies:

    >
    > > <script runat="server">
    > > Sub Page_Load(ByVal obj As Object, ByVal ea As EventArgs)
    > > 'create cookies
    > > Response.Cookies("UserName").Value = "Ron"
    > > Response.Cookies("UserName").Expires = "12/31/2008"

    >
    > > Response.Cookies("UserDetails")("FirstName") = "Ronnie"
    > > Response.Cookies("UserDetails")("LastName") = "Nathan"
    > > Response.Cookies("UserDetails")("LastVisitedDate") =
    > > DateTime.Now.ToString("d")
    > > Response.Cookies("UserDetails")("LastVisitedTime") =
    > > DateTime.Now.ToString("T")
    > > Response.Cookies("UserDetails").Expires = "12/31/2008"

    >
    > > 'read cookies count
    > > Response.Write(Request.Cookies.Count & " cookies created!
    > > <br>")

    >
    > > 'read cookies
    > > Response.Write("Full Name : " & Request.Cookies("UserDetails")
    > > ("FirstName") & " " & Request.Cookies("UserDetails")("LastName") &
    > > "<br>")

    >
    > > Response.Write("User Name : " &
    > > Request.Cookies("UserName").Value & "<br>")

    >
    > > Response.Write("Last Visit: " & Request.Cookies("UserDetails")
    > > ("LastVisitedDate") & " at " & Request.Cookies("UserDetails")
    > > ("LastVisitedTime"))
    > > End Sub
    > > </script>

    >
    > > As such, the cookie gets created successfully. ONLY 1 cookie gets
    > > created but when I run the above code for the first time i.e. when the
    > > cookie doesn't exist, Request.Cookies.Count evaluates to 3 & on
    > > further page refreshes, Request.Cookies.Count evaluates to 5.

    >
    > > How is Request.Cookies.Count evaluating to 3 & 5 when ONLY 1 cookie
    > > gets created (in the Temporary Internet Files folder)?

    >
    > > Thanks- Hide quoted text -

    >
    > - Show quoted text -


    Thank a lot, Juan, for your input. It was indeed very kind of you to
    give me such an elaborate & to-the-point answer. Thanks once again but
    I still have got a couple of doubts lingering in my mind.

    You already had a look at the code I cited in post #1 that creates &
    reads cookies. I created another ASP.NET page & created the same
    cookie with the same keys in the traditional ASP.NET way (the code in
    post #1 was more of ASP):

    <script runat="server">
    Sub Page_Load(ByVal obj As Object, ByVal ea As EventArgs)
    'create cookies
    Dim hCookie As HttpCookie

    hCookie = New HttpCookie("UserName")
    hCookie.Value = "Ron"
    hCookie.Expires = "12/31/2008"
    Response.Cookies.Add(hCookie)

    hCookie = New HttpCookie("UserDetails")
    hCookie.Values.Add("FirstName", "Ronnie")
    hCookie.Expires = "12/31/2008"
    Response.Cookies.Add(hCookie)

    hCookie.Values.Add("LastName", "Nathan")
    hCookie.Expires = "12/31/2008"
    Response.Cookies.Add(hCookie)

    hCookie.Values.Add("LastVisitedDate",
    DateTime.Now.ToString("d"))
    hCookie.Expires = "12/31/2008"
    Response.Cookies.Add(hCookie)

    hCookie.Values.Add("LastVisitedTime",
    DateTime.Now.ToString("T"))
    hCookie.Expires = "12/31/2008"
    Response.Cookies.Add(hCookie)

    'read cookie count
    Response.Write(Request.Cookies.Count & " cookies created!
    <br>")

    'read cookies
    Response.Write("Full Name : " & Request.Cookies("UserDetails")
    ("FirstName") & " " & Request.Cookies("UserDetails")("LastName") &
    "<br>")

    Response.Write("User Name : " &
    Request.Cookies("UserName").Value & "<br>")

    Response.Write("Last Visit: " & Request.Cookies("UserDetails")
    ("LastVisitedDate") & " at " & Request.Cookies("UserDetails")
    ("LastVisitedTime"))
    End Sub
    </script>

    The above code creates the same cookie with the same keys & values as
    the code in post #1 creates but this time, the cookie count comes to 6
    & NOT 3 (which was the cookie count in the code in post #1). Now why
    this difference in the cookie count although both the codes, if I am
    not mistaken, do the same thing?

    Note that I executed the above code AFTER manually DELETING the cookie
    that the code in post #1 created & vice-versa.

    I also added your code snippet in both the codes. The code in post #1
    generated this output (this is only the output your code generated):

    ------------------------------------------------------------
    Name: ASP.NET_SessionId
    Value: sxgym055kbqw5t55ywa1hrnw

    Name: UserName
    Value: Ron

    Name: UserDetails
    Subkey Name: FirstName
    Subkey Value: Ronnie
    Subkey Name: LastName
    Subkey Value: Nathan
    Subkey Name: DateLastVisited
    Subkey Value: 9/30/2007
    Subkey Name: TimeLastVisited
    Subkey Value: 2:03:26 PM
    ------------------------------------------------------------

    whereas the code cited in this post generated this output:

    ------------------------------------------------------------
    Name: ASP.NET_SessionId
    Value: ckveunmaaokqqm45fjcp2p2x

    Name: UserName
    Value: Ron

    Name: UserDetails
    Subkey Name: FirstName
    Subkey Value: Ronnie
    Subkey Name: LastName
    Subkey Value: Nathan
    Subkey Name: LastVisitedDate
    Subkey Value: 9/30/2007
    Subkey Name: LastVisitedTime
    Subkey Value: 2:21:23 PM

    Name: UserDetails
    Subkey Name: FirstName
    Subkey Value: Ronnie
    Subkey Name: LastName
    Subkey Value: Nathan
    Subkey Name: LastVisitedDate
    Subkey Value: 9/30/2007
    Subkey Name: LastVisitedTime
    Subkey Value: 2:21:23 PM

    Name: UserDetails
    Subkey Name: FirstName
    Subkey Value: Ronnie
    Subkey Name: LastName
    Subkey Value: Nathan
    Subkey Name: LastVisitedDate
    Subkey Value: 9/30/2007
    Subkey Name: LastVisitedTime
    Subkey Value: 2:21:23 PM

    Name: UserDetails
    Subkey Name: FirstName
    Subkey Value: Ronnie
    Subkey Name: LastName
    Subkey Value: Nathan
    Subkey Name: LastVisitedDate
    Subkey Value: 9/30/2007
    Subkey Name: LastVisitedTime
    Subkey Value: 2:21:23 PM
    ------------------------------------------------------------

    Since I created 4 keys (FirstName, LastName, LastVisitedDate &
    LastVisitedTime) in the cookie named "UserDetails", the same cookie
    info got repeated 4 times whereas the code in post #1 generated the
    cookie info only once though that code also creates the same 4 keys in
    the cookie named "UserDetails". Why this difference?

    Also I found that if I get rid of one of the keys created in the
    cookie "UserDetails" from the code shown in this post, the cookie
    count changes from 6 to 5 & the same cookie info gets repeated 3
    times. If I delete another key, then the cookie count comes down to 4
    (from 5) & the same cookie info gets repeated 2 times so on & so
    forth. So this means that Request.Cookies.Count not only adds the no.
    of cookies present but also adds the no. of keys created in the
    cookies.......

    Ron
    , Sep 29, 2007
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Alex Nitulescu

    Response.Cookies vs Request.Cookies

    Alex Nitulescu, Feb 3, 2005, in forum: ASP .Net
    Replies:
    1
    Views:
    8,456
    Hans Kesting
    Feb 3, 2005
  2. Andy Fish
    Replies:
    3
    Views:
    6,504
    Fredrik Lindner
    Nov 6, 2003
  3. user
    Replies:
    3
    Views:
    648
    =?ISO-8859-1?Q?G=F6ran_Andersson?=
    Mar 31, 2007
  4. _Who
    Replies:
    7
    Views:
    2,633
  5. efelnavarro09
    Replies:
    2
    Views:
    916
    efelnavarro09
    Jan 26, 2011
Loading...

Share This Page