【发布时间】:2013-10-08 15:43:16
【问题描述】:
我在我的 C# WebForms 应用程序中创建了一个 cookie,我正在 Windows 7 64 位的 IE10 上对其进行测试。
问题是我无法从后面的代码中删除 cookie。如果我刷新页面或只是单击超链接返回到完全相同的页面,该页面仍然可以读取 cookie。
我有一个弹出控件,可以响应用户按下确定按钮:
String key = "mycookiedata";
HttpCookie oCookie = null;
if (null != HttpContext.Current.Request.Cookies[key])
{
oCookie = HttpContext.Current.Request.Cookies[key];
oCookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Set(oCookie);
}
Session.Remove(key);
Session.Abandon();
Session.Clear();
后面的代码完成,控制权返回给用户。一切似乎都很好,直到我刷新页面并发现我认为被删除的 cookie 没有。出于好奇,我还尝试关闭浏览器窗口并在新浏览器中重新加载页面,但 cookie 仍然存在。退出的用户应该对他们真正退出并且 cookie 消失感到自在。
我是否遗漏了代码中的某些内容?
【问题讨论】:
-
您应该使用 Fiddler 并检查请求/响应。可能是在响应中删除了 cookie 时,可以在回发 (GET) 中重新创建它。另外,你是在做一个完整的回发还是只是一个 AJAX 更新?
-
cahmadzadeh,我不知道你的问题的答案。 OK 按钮处理是对 DevExpress 回调面板方法调用 cpdialog.PerformCallback() 的响应。那确实会回帖,但我不知道类型。我怀疑 Ajax 更新。我不认为我听说过 Fiddler,所以我一定会去看看。谢谢。
-
我以为我看到了一条评论,但找不到关于我的会话调用是请求而不是响应的评论。那可能是。我尝试添加它作为摆脱cookie的想法。那没有用。值得一试。我将调查 cookie 的重新创建。可悲的是,我不能真正在 Visual Studio 中使用调试器,因为 cookie 在域而不是本地实体上工作,但我可以从 Visual Studio 获得流量。
-
嗯,你必须做一个完整的回发(页面必须重新加载)否则cookie不会被实际设置(因此,它不会过期也不会被删除)。
-
cahmadzadeh,我将不得不联系 DevExpress 并了解我是否收到完整的回发。另一方面,我删除了我的临时 Session 调用,因为它没有做任何事情。
标签: c# asp.net cookies webforms httpcookie