【发布时间】:2012-03-31 07:02:30
【问题描述】:
我在这上面花了很多时间,这太疯狂了。
我有一个包含“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 是基页类中的一个属性,通过上述函数获取/设置 cookie)
现在,我使用“F10”离开上面的断点行的第二个变量的值发生了变化!
HttpContext.Current.Request.Cookies("currProjectID").Value "123" String
currProjectID 123 Integer
这太疯狂了!代码无处可去,调试点就在上面的“response.redirect”行下方,但值立即更改为之前的值! “setcookie”例程没有任何进展,所以请有人拯救我的精神错乱并告诉我出了什么问题!?
【问题讨论】:
-
我一直在玩它。仍然没有喜悦:-(即时监视窗口显示正确的更新值,直到我跨过“response.redirect”行,此时它立即变回其初始值,而无需通过“setcookie”函数。我真的看不出这个值是如何以这种方式改变的。
-
放弃。在 SQL Server 中恢复为基于会话的变量。
标签: asp.net cookies response.redirect httpcookie