在HttpCookie中存储价值

时间:2015-03-05 09:54:20

标签: asp.net-mvc httpcookie

使用MVC。

Function Login(ByVal token As String) As ActionResult
        Using client As New WebClient
            Try
                Dim jsonResponse As String = client.DownloadString(URL & "/Getuser&token=" & token)
                Dim obj As UserInfo = Newtonsoft.Json.JsonConvert.DeserializeObject(Of UserInfo)(jsonResponse)

                Response.Cookies.Add(New HttpCookie("token", token))
                Response.Cookies.Add(New HttpCookie("user_id", obj.id))

                Return Json(obj)

            Catch ex As WebException 
                Return Content("ERROR")

            Catch ex As Exception 
                Return Content("ERROR")
            End Try

        End Using
    End Function
  1. 我正在向此功能发送令牌。
  2. 然后使用此令牌从某个API获取用户信息
  3. 然后将此令牌存储在HttpCookie

    所有这一切都运作了近一个月, 直到它停止工作。

  4. 当我调试时,token有一个值,并将其存储在HttpCookie中,但当我调用Request.Cookies("token").Value时,它返回''

    任何帮助都将不胜感激。

    我对令牌进行了追踪..

    我将参数“token”写入文件,然后将其存储在cookie中。 然后我将cookie Request.Cookies("token").Value写在一个文件中,

     Function Login(ByVal token As String) As ActionResult
        WriteToFile("TOKEN RECEIVED = ", token)
    
        Using client As New WebClient
            Try
                Dim jsonResponse As String = client.DownloadString(URL & "/Getuser&token=" & token)
                Dim obj As UserInfo = Newtonsoft.Json.JsonConvert.DeserializeObject(Of UserInfo)(jsonResponse)
    
                Response.Cookies.Add(New HttpCookie("token", token))
                Response.Cookies.Add(New HttpCookie("user_id", obj.id))
                WriteToFile("TOKEN COOKIE = ", Request.Cookies("token").Value)
                Return Json(obj)
    
            Catch ex As WebException 
                Return Content("ERROR")
    
            Catch ex As Exception 
                Return Content("ERROR")
            End Try
    
        End Using
    End Function
    

    它返回以下内容:

    TOKEN RECEIVED = X132WEeRT3AASDV
    TOKEN COOKIE = 
    

    当我尝试编写请求和响应Cookie时:

    WriteToFile("TOKEN COOKIE = ", Request.Cookies("token").Value)
    WriteToFile("TOKEN COOKIE = ", Response.Cookies("token").Value)
    

    Request.Cookies(“token”)。值返回空字符串

    Response.Cookies(“token”)。值返回实际值

3 个答案:

答案 0 :(得分:1)

也许你的cookie会在一个月后过期?使用cookie时,不要忘记设置过期日期,并检查Web浏览器设置(例如:如果您使用的是#34;浏览器捆绑包"这可能是个问题)。

HttpCookie myCookie = new HttpCookie("UserSettings");
myCookie["Font"] = "Arial";
myCookie["Color"] = "Blue";
myCookie.Expires = DateTime.Now.AddDays(1d);
Response.Cookies.Add(myCookie);

https://msdn.microsoft.com/en-us/library/78c837bd%28v=vs.140%29.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

答案 1 :(得分:0)

确保仅在实际的Http请求期间访问cookie。也许你已经改变了你称之为这个功能的方式(或地点)。

答案 2 :(得分:0)

这是关于SO的一个老问题,但对于那些感兴趣的人,.NET团队已经创建了一种正确处理cookie的新方法。

这适用于.NET 4.7.1而不是早期版本:

请参阅 ASP.NET HttpCookie解析部分 https://blogs.msdn.microsoft.com/dotnet/2017/09/13/net-framework-4-7-1-asp-net-and-configuration-features/