我正在做一个用ASPMVC2的.NET项目。
在这个项目中,我们将一些信息存储在一个ecripted cookie ( ASPXAUTH cookie)中,以避免需要为每个请求查询数据库。
问题是这部分的代码突然停止工作了。
我检查了对源代码管理服务器上的代码所做的更改,以查找可能导致该更改的原因,但我什么也没有发现。我甚至恢复到一个已知的工作副本(在其他人的PC上工作,相同的代码等),但经过调试,似乎不再保存.ASPXAUTH cookie。相反,正在设置ASP.NET_SessionId cookie ...(之前不是)
我更改了web.config文件以关闭sessionState。这消除了ASP.NET_SessionId cookie的设置,但它仍然没有保存身份验证cookie。
我最近安装了一些Microsoft Windows XP更新,但另一个人(他的PC运行应用程序很好)也安装了。
在谷歌搜索之后,我发现了一些信息,指出了cookie的过期日期的问题。原因是pc没有正确的时间/日期(情况并非如此),而其他原因是cookie过期日期设置错误。(我检查过了,并且设置正确)...
这个问题在其他浏览器上仍然存在,除了我使用的浏览器(Chrome),我用IE6试过了。
你知道为什么会发生这样的事情吗?
我会继续发布我能找到的任何有用的信息。
提前谢谢。
发布于 2009-12-14 20:23:13
这可能是你的饼干长得太大了。我遇到了同样的问题。如果你的cookie变得太大,它就不能工作了,当然这取决于浏览器
MSDN
cookies通常被限制为4096字节,并且每个站点不能存储超过20个cookies。通过使用带有子键的单个cookie,您可以使用分配给您的站点的20个cookie中的较少cookie。此外,单个cookie占用大约50个字符的开销(过期信息等),加上您在其中存储的值的长度,所有这些都计入4096字节的限制。如果您存储5个子键而不是5个单独的cookie,则可以节省单独cookie的开销,并且可以节省大约200个字节。
发布于 2016-05-18 21:24:46
检查cookie大小的一种简单方法是调试并运行以下代码
int cookieSize = System.Text.UTF8Encoding.UTF8.GetByteCount(faCookie.Values.ToString());如果这超过了限制,那么您将遇到问题。
发布于 2019-11-25 03:43:59
在我的案例中,在一定数量的头部撞到墙上之后,我注意到我的工作项目中的cookie被设置为使用
FormsAuthentication.SetAuthCookie(user.token, false);相比之下,在我的非工作项目中,cookie是手动设置的:
var coockie = FormsAuthentication.GetAuthCookie(user.token, false);
coockie.Expires = DateTime.Now.AddDays(7);
Response.Cookies.Add(coockie);这发生在我的一个共享主机上,因为主机提供商做出了一些更改,而我无法通过支持部门找到这些更改。本地主机或其他共享主机或vps在第一种方法中运行良好
https://stackoverflow.com/questions/1900584
复制相似问题