Asp.net 刷新页面后,Vb.net cookie成为会话

Asp.net 刷新页面后,Vb.net cookie成为会话,asp.net,vb.net,cookies,Asp.net,Vb.net,Cookies,我正在尝试设置cookie,如果存在,则更新它。在初始设置中,cookie看起来很好,并且有过期日期,但如果我刷新该页面,cookie将变为会话 现场: 刷新 你知道为什么吗 Function writeReadArticleToCookie(ByVal id As Integer) As String() Dim sarr As String() Dim cookie As HttpCookie cookie = Request.Cookie

我正在尝试设置cookie,如果存在,则更新它。在初始设置中,cookie看起来很好,并且有过期日期,但如果我刷新该页面,cookie将变为会话

现场: 刷新

你知道为什么吗

Function writeReadArticleToCookie(ByVal id As Integer) As String()

        Dim sarr As String()

        Dim cookie As HttpCookie
        cookie = Request.Cookies("read_articles")
        If cookie Is Nothing
            cookie = New HttpCookie("read_articles")
            cookie.Path = "/"
            cookie.Value = id.ToString() & ","
            cookie.Expires = DateTime.Now.AddHours(6)
            sarr  = cookie.Value.Split(",")
        Else

            sarr  = cookie.Value.Split(",")
            If not sarr.Contains(id.ToString()) Then
              cookie.Value = cookie.Value & id.ToString() & ","
              cookie.Path = "/"

              sarr  = cookie.Value.Split(",")

            End If

        End If

        Response.Cookies.Add(cookie)

        Return sarr

    End Function

典型的错误。我正在更新请求cookie,而不是响应cookie。 下面是有效的代码

 Function writeReadArticleToCookie(ByVal id As Integer) As String()


        Dim sarr As String()

        Dim cookie As HttpCookie
        cookie = Request.Cookies("read_articles")
        If cookie Is Nothing
            cookie = New HttpCookie("read_articles")
            cookie.HttpOnly = true
            cookie.Value = id.ToString()
            cookie.Expires = DateTime.Now.AddHours(6)
            sarr  = cookie.Value.Split(",")
             Response.Cookies.Add(cookie)
        Else


            sarr = cookie.Value.Split(",")
            If not sarr.Contains(id.ToString()) Then


                Response.Cookies("read_articles").Value = cookie.Value & "," & id.ToString()
                Response.Cookies("read_articles").Expires = DateTime.Now.AddHours(6)

                sarr = Response.Cookies("read_articles").Value.Split(",")

            End If

        End If



        Return sarr

    End Function

您没有在else中设置Expire,所以cookie使用默认的Expire,即Session。@事实上,问题是我正在更新请求而不是响应cookie。