2010-01-20 24 views
1

我正在研究ASP.NET應用程序,但我很難理解爲什麼cookie看起來爲空。Cookie在某些ASP.NET頁面上爲NULL(即使它存在!)

在一個頁面(results.aspx)上,我創建了一個cookie,每次用戶單擊一個複選框時添加條目。當用戶點擊一個按鈕時,它們被帶到另一個頁面(graph.aspx),在那裏讀取該cookie的內容。

問題是,cookie似乎不存在graph.aspx上。以下代碼返回空值:

Request.Cookies["MyCookie"]; 

奇怪的是這只是我們登臺服務器上的一個問題。這個應用程序被部署到生產服務器,並沒有問題。它在當地也很完美。

我已經把調試代碼的兩個頁面上:

StringBuilder sb = new StringBuilder(); 
foreach (string cookie in Request.Cookies.AllKeys) 
{ 
    sb.Append(cookie.ToString() + "<br />"); 
} 

this.divDebugOutput.InnerHtml = sb.ToString(); 

在results.aspx(其中不存在任何問題),我可以看到餅乾是:

的myCookie __utma __utmb __utmz _csoot _csuid ASP.NET_SessionId __utmc

在graph.aspx,你可以看到有沒有 '的myCookie'

__utma __utmb __utmz _csoot _csuid ASP.NET_SessionId __utmc

雖這麼說,如果我走看看我的FireCookie,我可以看到,實際上在兩個頁面上都存在相同的cookie! WTF?!?!?!?! (好吧,咆哮:-))

有沒有人見過這樣的事情?爲什麼ASP.NET會聲稱一個cookie在一頁上爲空,而在另一頁上不爲空?

+0

您使用的是哪種瀏覽器?您是否在多個瀏覽器上嘗試過這種瀏覽器,結果相同? – Nick 2010-01-20 15:07:41

+0

Firefox和IE 8(還有6個)。兩者都是一樣的。 – DaveDev 2010-01-20 15:50:17

回答

1

發生這種情況是因爲我在不同的虛擬目錄下運行應用程序。當我在原版上運行它時,它工作。

0

我會建議加載IIS調試診斷工具。在特定的服務器上完全有可能存在資源問題或未處理的異常,它會在將特定的cookie添加到響應之後但在向用戶刷新之前將其殺死。這主要是由於快速連續發生的一系列異常導致快速失敗保護關閉運行您的頁面的w3wp.exe進程。當這個進程被回滾到提供響應的時候,這個cookie就不存在了,所有這些都會被呈現的html。

您也可以嘗試關閉快速失敗保護或更改應用程序池上的內存設置/回收設置。

相關問題