【问题标题】:How to prevent publish resetting cookies using ASP.NET?如何防止使用 ASP.NET 发布重置 cookie?
【发布时间】:2011-06-24 01:13:58
【问题描述】:

我有一个使用 ASP.NET 的 cookie 的网站,但是每次我发布一个新站点并上传全部或部分新的 .dll 时,它都会使所有现有的 cookie 失效。
cookie 用于跟踪简单的登录,但我想维护在发布之前创建的 cookie,以便它们在之后仍然可用 - 这似乎会影响基于 webkit 的浏览器,在我的测试中,我可以在每个部分或全部之后复制这个问题发布。

以下是我用来设置 Cookie 的代码:

If HttpContext.Current.Response.Cookies(COOKIE_NAME) Is Nothing Then
            Dim _cookie As New HttpCookie(COOKIE_NAME, CookieValue)
            _cookie.Path = COOKIE_PATH
            _cookie.Expires = COOKIE_EXPIRES
            HttpContext.Current.Response.Cookies.Add(_cookie)
        Else
            With HttpContext.Current.Response.Cookies(COOKIE_NAME)
                .Path = COOKIE_PATH
                .Value = Value
                .Expires = COOKIE_EXPIRES
            End With
        End If

这是我用来读取 Cookie 的代码:

If HttpContext.Current.Request.Cookies(COOKIE_NAME) IsNot Nothing Then
    Return HttpContext.Current.Request.Cookies(COOKIE_NAME).Value
End If

其中 COOKIE_NAME 设置为“MyCookie”,COOKIE_PATH 设置为“/”,COOKIE_EXPIRES 设置为“#1/1/2035#”

我可以很好地读/写 cookie,但是一旦我发布了所有以前创建的 cookie,Webkit 浏览器将无法读取它们,尽管它们可以再次写入,但我不确定这是否会一直如此 -我希望发布对 cookie 完全没有影响 - 这可能吗?

【问题讨论】:

  • 您是否查看了 WebKit 浏览器中的请求/响应标头以了解发生了什么?

标签: asp.net vb.net session cookies windows-server-2008


【解决方案1】:

确保您在 web.config 中定义了机器密钥。否则 ViewState、Session、Forms 身份验证或其他加密和/或安全值将在您的应用回收时失效。

这是codeplex上的一篇好文章。

This 是一款在线工具,可为您生成机器密钥。

<system.web>
 <machineKey YOUR VALUES HERE/>
</system.web>

【讨论】:

  • 我没有加密我正在读/写的这些信息,该值在进入 cookie 时已经受到保护,这是通过 Cookie 值中的固定代码完成的。
  • 我做了一些进一步的阅读,我提到的机制似乎只适用于角色 Cookie,所以确实,这似乎不能解决你的问题。
  • 无论如何,谢谢 - 这可能是问题,因为我可以看到该值更改可能导致问题的地方,无论如何知道其他人是否有这个问题很有用
【解决方案2】:

我认为您应该考虑使用 CookieContainer。

http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.cookiecontainer.aspx

我过去曾使用多个网络请求处理过它们。

【讨论】:

  • 这看起来很有趣,可以尝试一下 - 如果它可以在发布之间保持 cookie 状态 - 它会完成这项工作!
  • 我认为 CookieContainer 仅用于 HttpWebRequest,这是您仅用于屏幕抓取等需求请求的东西。我认为这不会有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-13
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
  • 2015-12-24
  • 2011-11-23
相关资源
最近更新 更多