Asp.net 刷新页面后,Vb.net cookie成为会话
我正在尝试设置cookie,如果存在,则更新它。在初始设置中,cookie看起来很好,并且有过期日期,但如果我刷新该页面,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
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。