2009-12-14 160 views
5

林在ASP .NET MVC 2ASPXAUTH cookie不會被保存

在這個項目中,我們存儲的ecripted的cookie(在ASPXAUTH餅乾)裏面的一些信息Web項目合作,以避免需要查詢數據庫爲每個請求。

事情是這部分代碼突然停止工作。

我回顧了對源代碼管理服務器上任何可能導致它的代碼所做的更改,但是我什麼都沒發現。我甚至還回到了一個已知的工作副本(在其他人PC,相同的代碼等上工作),但經過調試後,似乎.ASPXAUTH cookie不再被保存。相反ASP.NET_SessionId cookie正在設置...(以前沒有)

我更改了web.config文件以關閉sessionState。這消除了ASP.NET_SessionId cookie的設置,但它仍然不保存auth cookie。

我最近安裝了一些Microsoft Windows XP更新,但其他人(誰運行該應用程序的PC很好)也做了。

谷歌搜索後,我發現一些信息指出了cookie的有效日期問題。以太網電腦沒有正確的時間/日期(事實並非如此),而其他錯誤設置的cookie過期日期。 (我檢查,它被正確設置)...

除了一個即時通訊使用(Chrome)之外,其他瀏覽器問題仍然存在,我用IE6試了一下。

爲什麼會發生這種情況的任何想法?

我繼續發佈任何有用的信息,我可以找到。

在此先感謝。

回答

8

這可能是因爲你的餅乾變得太大了。我遇到了同樣的問題。 如果你的cookie變得太大,這是行不通的,這取決於當然

MSDN

餅乾通常限於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?

+0

你釘了它,它的確是一個尺寸問題。非常感謝。 :] – 2009-12-14 12:43:08

0

一個簡單的方法來檢查你的餅乾大小爲調試和運行下面的代碼

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

如果超過限制,那麼你會遇到的問題。