我通过“注销”按钮在注销页面内运行以下c#代码。 它在ie和ff上工作正常,但在chrome上没有。问题是chrome不会设置cookie。该值在响应标头中根本不显示。我已经在网上阅读了一些类似问题的报告,但没有提出适当的解决方案。任何帮助将非常感激。感谢您的时间。以下是在页面中运行的代码:
public class LogOut : ExtendedControlBase
{
void RemoveCookie(string CookieName)
{
HttpCookie myCookie = new HttpCookie(CookieName);
myCookie.Expires = DateTime.Now.AddDays(-100);
Response.Cookies.Add(myCookie);
}
protected override void OnInit(EventArgs e)
{
Session.Remove("SiteUserEmail");
Session.Remove("SiteUserName");
Session.Remove("siteUserId");
Session.Remove("siteUserGroupId");
RemoveCookie("u");
Response.StatusCode = 301;
Response.AddHeader("Location", "/");
Response.Flush();
Response.End();
}
}
答案 0 :(得分:1)
一些建议:
尝试使用类似Fiddler的内容来查看究竟发生了什么。我的猜测实际上是“注销”链接无法按预期在Chrome上运行。
尝试手动设置Cookie标头:
Response.AddHeader("Set-Cookie", "u=; expires=Fri, 31-Dec-1999 23:59:59 GMT");
尝试设置测试标题以检查它们是否真的在线上:
Response.AddHeader("X-Testing", "Testing");
注意:我还没试过。我假设在Asp.Net中设置任意标题。
答案 1 :(得分:0)
我的猜测是,这是因为过去设定了过期日期。您是否尝试删除myCookie.Expires = DateTime.Now.AddDays(-100);
?我相信它仍将被视为没有该值的会话cookie,因为将来不会设置到期日期。