我们有一个需要cookie的aspx页面才能启动。在重定向到该页面之前,我们创建了cookie,然后在响应中给出,然后重定向到页面。
Form form = new Form {
FormID = dalObject.FormID,
PageName = dalObject.PageName,
ViewPageName = dalObject.ViewPageName };
HttpCookie cookie = new HttpCookie("FormCookie");
cookie.Expires = DateTime.Now.AddMinutes(1);
if (dalObject.FormID==(int)Forms.SP_APP_FORM)
{
cookie.Values.Add("ApplicationRepositoryID",GetEncryptedToken(applicationRepositoryID.ToString()));
cookie.Values.Add("UserDirectoryID", GetEncryptedToken(userDirectoryID.ToString()));
cookie.Values.Add("FormID", GetEncryptedToken(dalObject.FormID.ToString()));
if (applicationFormID.HasValue)
cookie.Values.Add("ApplicationFormID", GetEncryptedToken(applicationFormID.ToString()));
}
form.PageCookie = cookie;
return form;
问题是在开发环境中它工作得很好,在生产中它也在工作(对他们来说),但是如果我们尝试生产站点,它就不起作用(来自我们的开发计算机)。我们怀疑cookie没有被创建。这发生在开发的3台计算机中的2台上。其中一个正在运作。 我们试图删除cookie,清除缓存,但没有结果。
有什么想法吗? 感谢
答案 0 :(得分:0)
我以前在我们的网站上看过这个。在我们的例子中,客户端和服务器时钟彼此明显不同步。服务器设置到期时间,客户端根据自己的时钟进行检查,如果超过(在您的情况下)一分钟,则会立即过期。
我们将cookie的到期时间设置得更远(比如一周或一个月),然后只在服务器上进行检查(因为它应该检查自己)。基本上,我们向cookie添加了额外的数据(手动到期时间),服务器可以使用它来进行检查。如果它已经过了你的计算(你设置的那一分钟),那么服务器会删除(并忽略)它发送的cookie。
我不知道这是否是问题的最佳解决方案,但它对我们有用。
顺便说一下,我们只在IE上发现了这个问题。