gpt4 book ai didi

asp.net - asp.net 中的 cookie 问题。值在 response.redirect 后恢复

转载 作者:行者123 更新时间:2023-12-03 16:56:22 25 4
gpt4 key购买 nike

我在这上面花了很多时间,这太疯狂了。

我有一个包含“setcookie”函数的页面基类,这基本上是这样的:

        Dim context As HttpContext = System.Web.HttpContext.Current

If context.Request.Cookies(cookieName) Is Nothing Then
Dim cookie As HttpCookie
cookie.Value = cookieValue
cookie.Expires = DateTime.Now.AddDays(7)
context.Response.Cookies.Add(cookie)
Else
Dim cookie As HttpCookie = context.Request.Cookies(cookieName)
cookie.Expires = DateTime.Now.AddDays(7)
cookie.Value = cookieValue
End If

该函数由一个简单的 aspx 页面调用。由于这是在测试环境中,因此我正在使用的 cookie 中有一个先前的值“123”。如果我使用调试和监视窗口,我会看到值成功更改为“168”。

我在一行上有一个调试断点,它是:
           Response.Redirect("overview.aspx", False)

当断点处于事件状态时,观察窗口中的值为:
    currProjectID   168 Integer
HttpContext.Current.Request.Cookies("currProjectID").Value "168" String

(currProjectID 是 basepage 类中的一个属性,它使用上述函数获取/设置 cookie)

现在,第二个我使用“F10”离开上面的断点线,变量的值发生了变化!
    HttpContext.Current.Request.Cookies("currProjectID").Value  "123"   String
currProjectID 123 Integer

疯了吧!代码无处可去,调试点直接在上面的“response.redirect”行下方,但值立即更改为之前的值! “setcookie”例程附近没有任何东西,所以请有人拯救我的精神错乱并告诉我出了什么问题!?

最佳答案

你必须:
- 从请求中获取 cookie
- 更新cookie
- 发送 cookie 作为响应

如果您不在响应中发送 cookie,浏览器将不会知道任何有关更改的信息!!!
Cookie 更新自身并不是那么聪明。

希望能帮助到你。

更新

var cookieDetails = Request.Cookies["yourCookie"];
if (cookieDetails != null)
{
cookieDetails.Values["someValue"] = valueToAssign;
}
else
{
cookieDetails = new HttpCookie("yourCookie");
cookieDetails.Values.Add("someValue", valueToAssign);
}
Response.Cookies.Add(cookieDetails);

这个例子设置了一个cookie。正如您所看到的,第一位是检查 cookie 是否存在,第二位只是创建新的 cookie。

您错过了将 cookie 发送回浏览器的最后一位
Response.Cookies.Add(cookieDetails);

希望能帮助到你。

关于asp.net - asp.net 中的 cookie 问题。值在 response.redirect 后恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9708420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com