Asp.net 未保存ASPXAUTH cookie

Asp.net 未保存ASPXAUTH cookie,asp.net,asp.net-mvc,cookies,forms-authentication,Asp.net,Asp.net Mvc,Cookies,Forms Authentication,我正在ASP.NETMVC2中从事一个web项目 在这个项目中,我们将一些信息存储在一个ecriptedcookie(aspxauthcookie)中,以避免需要为每个请求查询数据库 问题是这部分的代码突然停止工作了 我检查了源代码管理服务器上对代码所做的更改,没有发现任何可能导致更改的原因。我甚至恢复到一个已知的工作副本(在其他人的PC上工作,使用相同的代码等),但调试后,.ASPXAUTH cookie似乎不再保存。相反,正在设置ASP.NET_会话ID cookie。。。(威奇以前不是)

我正在ASP.NETMVC2中从事一个web项目

在这个项目中,我们将一些信息存储在一个ecriptedcookie(aspxauthcookie)中,以避免需要为每个请求查询数据库

问题是这部分的代码突然停止工作了

我检查了源代码管理服务器上对代码所做的更改,没有发现任何可能导致更改的原因。我甚至恢复到一个已知的工作副本(在其他人的PC上工作,使用相同的代码等),但调试后,.ASPXAUTH cookie似乎不再保存。相反,正在设置ASP.NET_会话ID cookie。。。(威奇以前不是)

我更改了web.config文件以关闭会话状态。这消除了ASP.NET_SessionId cookie的设置,但它仍然没有保存身份验证cookie

我最近安装了一些Microsoft Windows XP更新,但另一个人(他的电脑运行的很好)也安装了

在谷歌搜索之后,我发现了一些信息,指出饼干的有效期有问题。原因是pc没有正确的时间/日期(情况并非如此),其他原因是cookie过期日期设置错误。(我已检查,设置正确)

除了我使用的浏览器(Chrome)之外,这个问题在其他浏览器上仍然存在。我在IE6上试用过它

你知道为什么会这样吗

我会继续发布我能找到的任何有用的信息


提前谢谢。

这可能是因为您的饼干太大了。我遇到了同样的问题。 如果你的cookie太大,它就不能工作,当然这取决于浏览器

Cookie通常限制为4096字节,每个站点最多只能存储20个Cookie。通过将一个cookie与子键一起使用,您可以减少站点分配的20个cookie中的使用量。此外,一个cookie占用大约50个字符的开销(过期信息等),加上存储在其中的值的长度,所有这些都将计入4096字节的限制。如果存储五个子键而不是五个单独的cookie,则可以节省单独cookie的开销,并且可以节省大约200字节


检查cookies大小的一个简单方法是调试并运行以下代码

int cookieSize = System.Text.UTF8Encoding.UTF8.GetByteCount(faCookie.Values.ToString());

如果这超过了限制,那么您将遇到问题。

在我的案例中,我在工作项目中注意到cookie是使用

FormsAuthentication.SetAuthCookie(user.token, false);
与此相反,在我不工作的项目中,cookie是手动设置的:

var coockie = FormsAuthentication.GetAuthCookie(user.token, false);
coockie.Expires = DateTime.Now.AddDays(7);

Response.Cookies.Add(coockie);

这发生在我的一个共享主机上,因为主机提供商做了一些更改,但我无法通过支持部门了解。本地主机或其他共享主机或VP在第一次接近时工作正常,这显然是一个大小问题。非常感谢