ASPXAUTH cookie未保存

时间:2009-12-14 12:13:12

标签: asp.net asp.net-mvc cookies forms-authentication

我正在开发ASP .NET MVC 2中的Web项目。

在这个项目中,我们将一些信息存储在一个ecripted cookie(ASPXAUTH cookie)中,以避免为每个请求查询数据库。

事情是这部分的代码突然停止了工作。

我查看了对源控制服务器上的代码所做的任何可能导致它的更改,我一无所获。我甚至还原到了一个已知的工作副本(处理其他人PC,相同的代码等),但经过调试后,似乎.ASPXAUTH cookie不再被保存了。而是设置了ASP.NET_SessionId cookie ...(之前没有)

我更改了web.config文件以关闭sessionState。这消除了设置ASP.NET_SessionId cookie,但它仍然没有保存auth cookie。

我最近安装了一些Microsoft Windows XP更新,但另一个人(PC运行应用程序就好了)也做了。

谷歌搜索后,我发现一些信息指出了cookie的过期日期问题。以太网电脑没有合适的时间/日期(事实并非如此),而其他人则错误地设置了有效期限。 (我检查过并且设置正确)...

除了我正在使用(Chrome)之外的其他浏览器,问题仍然存在,我尝试使用IE6。

关于为什么会发生这种情况的任何想法?

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

提前致谢。

3 个答案:

答案 0 :(得分:9)

这可能是你的cookie变得太大了。我遇到了同样的问题。 如果您的cookie变得太大,它将无法工作,具体取决于浏览器

MSDN

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

What is the maximum size of a web browser's cookie's key?

what happens when cookies file exceeds maximum size?

答案 1 :(得分:1)

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

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

如果超出限制,那么您将遇到问题。

答案 2 :(得分:0)

在我的情况下,一定数量的头撞在墙上后,我在工作项目中发现Cookie是使用

设置的
where: '"entity_id" = ''fibaro_system_fgwpe_f_wall_plug_gen5_energy'' and time > now() - 12h' 

相反,在我无法正常工作的项目中,cookie是手动设置的:

FormsAuthentication.SetAuthCookie(user.token, false);

这是在托管服务提供商进行了一些更改之后发生的,这是在我的一个共享托管中发生的,而我无法通过支持部门找到或找到。本地主机或其他共享主机或vps可以很好地配合第一个appr