我遇到一个问题,即部署到两个隔离环境的相同代码(Web应用程序)在“Logout”上的行为方式不同。
唯一明显的关键区别是Server1不是安全协议,因此http://myurl
。 Server2是安全协议,https://myurl
。
这些服务器都在II6中托管Web应用程序,我已经梳理了设置以找到差异,但没有什么突出的。 Web配置没有任何特殊的声明。
“注销”机制很简单,将相关cookie的有效期设置为前一天,然后重定向回主页。
Request.Cookies["MyCookie"].Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(Request.Cookies["MyCookie"]);
Response.Redirect("~/Folder/Homepage.aspx");
有没有人有任何关于为什么相同的代码在一台服务器上与另一台服务器上的行为不同的理论?
我已经尝试了一些流行的浏览器IE8 / 9,Chrome,Firefox,结果相同。即使使用资源实用程序检查cookie,也会发现server1(http)正确处理了cookie,而server2(https)保留了cookie(检查过期日期显示日期确实设置为昨天,但它仍然保留它。)
答案 0 :(得分:0)
事实证明,因为生成cookie的登录控件是一个重用的控件,所以有一个硬编码的域集。所以我抓住了cookie,修改了域名值,并将其设置为我当前的域名。完成后,我就能正确地使cookie过期。