2014-02-20 93 views
0

由於未知原因,我的網站不會在本地調試IIS或部署IIS時向瀏覽器發送ASP.NET_SessionId cookie,因此我的會話在每個頁面上始終爲空。在IIS首選項中,「會話狀態」設置爲「進程中」(對不起,也許不是精確的翻譯,我已經本地化了IIS)。關於這件事的任何想法?會話值在調用之間丟失

ADDITION 1:好吧,我切換sessionState模式爲<sessionState cookieless="UseUri" />。瀏覽器中的Url地址現在包含(S(fn215g55r4kws155lbfaxf55))標記,但Session ASPX頁面的屬性爲空ANYWAY。所以...我的網站仍然沒有任何明顯的原因。

ADDITION 2.我在同一個調試服務器上創建了空白網站,會話cookie工作正常 - 值在呼叫之間保持不變。所以,這個問題與我的主要網站或web.config有關,我相信。

ADDITION 3。正如所提到的@Damien_The_Unbeliever,這個問題真的與設定值有關。我不知道爲什麼,但會議完全忽略了行Context.Session[promoCodeSessionKey] = (int?)promoCode.Id;。此行之後沒有發送cookie。但是,如果會話已在另一個地方創建並設置了cookie,則此行將正常工作。

ADDITION 4。我找到了原因。請參閱下面的答案。

+0

您不會在瀏覽器中關閉cookie嗎?你可以嘗試另一個瀏覽器來確定嗎? –

+0

不幸的是,任何瀏覽器都沒有收到會話cookie。所有其他餅乾都可以。我使用Fiddler來追蹤它。 – Denis

+2

你真的*使用*(或嘗試)會話嗎?會話Cookie沒有設置(並且會話ID不停地重新生成),直到它實際*有*創建會話,因爲您正在使用它。 –

回答

0

WOOHOO !!我找到了原因! ASPX的<%@ Page標籤中有EnableSessionState="ReadOnly"指令。請注意,a)由於此Session在母版頁上不起作用,以及b)沒有例外!